【发布时间】:2015-02-24 18:52:26
【问题描述】:
我正在尝试在sails 上下文之外使用我的Sails.js 模型。我有一个名为“Request”的简单模型,我正在使用sails-disk 适配器。 Sails 应用程序内部一切正常,但是当我尝试在应用程序外部使用模型时(我正在运行需要保存通过它的请求的单独代理服务器),我收到以下错误。似乎 this.waterline.schema 由于某种原因未定义。这是由最后一个代码示例中的“new Request()”行触发的。
注意:This question 建议使用 Sails.load 将所有内容包装在sails 服务器上下文中,但我已经有一个独立于代理服务器运行的sails 服务器,所以当我尝试这样做时会遇到各种错误。
错误:
/path-to-app/node_modules/sails/node_modules/waterline/lib/waterline/core/index.js:70
var schemaAttributes = this.waterline.schema[this.identity].attributes;
TypeError: Cannot read property 'request' of undefined
api/models/Request.js
module.exports = {
identity: 'request',
schema: true,
autoCreatedAt: true,
autoUpdatedAt: true,
migrate: 'alter',
attributes: {
id: {
type: 'string',
primaryKey: true,
required: true
},
method: 'string',
url: 'string'
}
./proxy.js 尝试在外部脚本中加载风帆水线模型(略)
var uuid = require('node-uuid'),
Waterline = require('sails/node_modules/waterline'),
RequestCollection = require('./api/models/Request.js'),
sailsDisk = require('sails-disk');
RequestCollection.adapter = 'localDiskDb';
var Request = Waterline.Collection.extend(RequestCollection);
new Request({
adapters: {
localDiskDb: sailsDisk
}
}, function(err, collection) {
if (err) {
console.error(err);
return;
}
// Save the request
collection.create({
id: uuid.v4(),
method: 'foo method',
url: 'foo url'
}).exec();
});
【问题讨论】: