我有两个模型(假设是model1和model2),它们都有多归属关系。Model2有model1的外键。
我想访问model2实例方法中的model1数据。
My Code for model2是这样的
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的数据呢?
如有任何帮助,不胜感激。
谢谢
不要使用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
});
async模块可用于此:
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();
}
]};