Node.js 如何在自定义实例方法中使用findOne查询方法
我正在努力做到以下几点:Node.js 如何在自定义实例方法中使用findOne查询方法,node.js,sails.js,waterline,Node.js,Sails.js,Waterline,我正在努力做到以下几点: // Task Model module.exports = { schema: true, attributes: { directProy: { type: 'string', required: true }, user: { type: 'string', required: true }, checkUser: {
// Task Model
module.exports = {
schema: true,
attributes: {
directProy: {
type: 'string',
required: true
},
user: {
type: 'string',
required: true
},
checkUser: {
type: 'boolean',
defaultsTo: false
},
proy: {
type: 'string',
required: true
},
pieza: {
type: 'string',
required: true
},
hours: {
type: 'string',
required: true
},
obs: {
type: 'text',
defaultsTo: "lorem ipsum"
},
check: {
type: 'boolean',
defaultsTo: false
},
userName: function() {
User.findOne(this.user).done(function(err, user){
if(err){ return err;}
return user.name;
});
}
}
})
在方法“userName”中,我试图获取一个用户名,该用户名的ID存储在“user”属性中
但是当我运行“username”方法时,返回“undefined”,我认为这一定是异步类型的问题
如果他们能给我帮助,我将不胜感激,因为我不知道如何关联价值观在模型之间,这非常有用尝试传递回调
userName: function(cb) {
User.findOne(this.user).done(function(err, user){
cb(err, user.name);
});
}
model.userName(function(err, username) {
console.log(username);
});
然后,当您调用它时,请确保传递回调
userName: function(cb) {
User.findOne(this.user).done(function(err, user){
cb(err, user.name);
});
}
model.userName(function(err, username) {
console.log(username);
});
您应该使用
.exec
而不是.done
,因为它在中不可用sails@0.10
@磁带下面的答案是正确的,但对于您的情况——如果您使用的是Sails v0.10.x——您应该只使用模型关联,并在用户和任务之间建立一对多关联。见文件。