线索在sails-postgresql适配器代码中——它的几个助手包括这一点:
var schemaName = 'public';
if (inputs.meta && inputs.meta.schemaName) {
schemaName = inputs.meta.schemaName;
} else if (inputs.datastore.config && inputs.datastore.config.schemaName) {
schemaName = inputs.datastore.config.schemaName;
}
所以实际上驱动程序正在寻找一个默认名为public的模式,除非通过调用meta()提供不同的值,或者模式名称是在应用程序范围内配置的。
要为所有模型配置模式名称,需要在 postgresql 数据存储的配置中包含一个schemaName属性,该属性出现在datastore.js中:
...
default: {
adapter: 'sails-postgresql',
url: 'postgresql://username:password@localhost:5432/your_database_name',
schemaName: 'your_schema_name_here'
}
一旦到位,您不必将meta({ schemaName: 'blah'})附加到任何查询。我为此苦苦挣扎了几天,终于以这种方式解决了它。