我是新手,我对一对一的关系有问题。
首先,我有一个模型用户:
module.exports = {
schema: true,
identity : "User",
tableName: "user",
attributes: {
email: {
type: 'email',
unique: true,
required: true
},
password: {
type: 'string'
},
salt: {
type: 'string'
},
merchant: {
model: 'merchant',
defaultsTo: null
},
removed: {
type: 'boolean',
required: true,
defaultsTo: false
}
}
}
我的商业模式是:
module.exports = {
schema: true,
identity : "Merchant",
tableName: "merchant",
attributes: {
name: {
type: 'string',
unique: true,
required: true
},
code: {
type: 'string',
unique: true,
required: true
},
security_key: {
type: 'string',
required: true
},
active: {
type: 'boolean',
defaultsTo: false,
required: true
},
user: {
model: 'user'
}
}
}
因此,当我需要查找
merchant.active = true
的记录时,我会编写以下查询:var findUser = User.find(query).populate('merchant', {active: true});
return findUser;
但根本不起作用。
有什么办法能解决这个问题吗?
我的帆版本是:0.11.1。我的数据库是MongoDB
最佳答案
首先,从关联属性中删除defaultsTo
。我不喜欢这样:)我不知道这是否会造成问题,但在文档中我从来没有看到过。
此外,还需要执行查询,而不仅仅是返回查询。如果我接受您的模型声明,那么我可以这样编写填充查询。
var findUser = User.find(query).populate('merchant', {active: true});
findUser.then(function(user) {
console.log('Your user is ' + user);
}).catch(function(error) {
console.log('Your error is ' + error);
});
关于node.js - 帆js一对一填充条件不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32507911/