我有两个模型(比如说model1和model2),两者都属于hasmany属于关系。 model2具有model1的外键。
我想访问model2实例方法中的model1数据。
我的模型2代码是这样的
module.exports = {
attributes : {
name : {
type : 'url',
required : true,
unique : true
},
model1 : {
model : 'Model1',
},
model1Data : function() {
var data = [];
sails.models.model1.findOne(
{'id':this.model1}
).done(function(err, model1) {
data.push(model1);
});
return data;
}
},
};
这里当我调用model1.model1Data()时,它返回一个空数组,因为函数是异步执行的。
那么如何获取model1的数据?
任何帮助都将不胜感激。
由于
答案 0 :(得分:0)
请勿使用return data
。向model2.model1Data()
函数添加回调参数。
// ...
model1Data : function(cb) {
var data = [];
sails.models.model1.findOne(
{'id':this.model1}
).done(function(err, model1) {
data.push(model1);
cb(err, data)
});
// return data;
}
// ...
然后你可以这样打电话给model2.model1Data()
:
sails.model2.model1Data(function(err, data) {
if (err) return;
// process the data here
});
答案 1 :(得分:0)
异步模块可用于此:
var async = require('async');
//
async.series{[
//this will always run first
function(callback) {
//do your model1 logic
callback();
},
//this will always run second
function(callback) {
//do your model2 logic, which will enable you to find your model1Data
callback();
}
]};