2014-04-01 2 views
1

У меня есть следующие в моей Sailsjs конфигурации/adapter.js:Sailsjs объектная модель не возвращает данные для Postgresql

module.exports.adapters = { 
    'default': 'postgres', 

    postgres : { 
    module : 'sails-postgresql', 
    host  : 'xxx.compute-1.amazonaws.com', 
    port  : 5432, 
    user  : 'xxx', 
    password : 'xxx', 
    database : 'xxx', 
    ssl  : true, 
    schema : true 

    } 
}; 

И в модели/Movie.js:

Movie = { 

    attributes: { 
    tableName: 'movies.movies', 
    title: 'string', 
    link: 'string' 
    } 

}; 

module.exports = Movie; 

В моем контроллер:

Movie.query("SELECT * FROM movies.movies", function(err, movies) { 
    console.log('movies', movies.rows); 
}); 

movies.rows ДЕЛАЕТ возвращают правильные данные

Однако:

Movie.find({ title: 'Frozen' }, function(err, movies) { 
    console.log('movies', movies) 
    }); 

фильмы возвращает EMPTY ARRAY

Таким образом, кажется все соединения хороши, потому что сырой запрос работает отлично ,

Может ли быть что-то, что я делаю неправильно с настройкой Movie.find() или с моделями/Movie.js?

Атрибут tableName не поддерживает postgresql имя_схемы_имя.table_name?

ответ

2

Прежде всего, вам необходимо переместить tableName из attributes, так как это свойство класса. Во-вторых, sails-postgresql есть некоторые (очень недокументированные) поддержку схем, используя meta.schemaName вариант:

Movie = { 

    tableName: 'movies', 
    meta: { 
    schemaName: 'movie' 
    }, 

    attributes: { 
    title: 'string', 
    link: 'string' 
    } 

}; 

module.exports = Movie; 

Вы можете дать что попробовать, и если он не работает, либо перенести таблицу в public схеме, или nudge the author of the schemaName support за помощью.

+0

Сохраняет записи в общедоступной схеме независимо от того, каким образом предоставляется схема. Я что-то пропустил? User.create ({name: 'Diego'}). Exec (function createCB (err, created) { console.log ('Создан пользователь с именем' + created.name); }); – Diego

Смежные вопросы