Node.js 双方是否应该建立一对一的联系?
我有两种型号(用户和代理)。然后我创建一个用户和一个代理。我希望在使用/user和/agent的蓝图路由时看到关联。我只看到用户模型通过/agent蓝图与agent相关联。/user蓝图没有对代理的任何引用/关联 当我尝试使用以下命令通过用户ID访问代理时,会出现此问题:Node.js 双方是否应该建立一对一的联系?,node.js,model,sails.js,waterline,Node.js,Model,Sails.js,Waterline,我有两种型号(用户和代理)。然后我创建一个用户和一个代理。我希望在使用/user和/agent的蓝图路由时看到关联。我只看到用户模型通过/agent蓝图与agent相关联。/user蓝图没有对代理的任何引用/关联 当我尝试使用以下命令通过用户ID访问代理时,会出现此问题: User.findOne(req.body.userId).populate('agent').exec(function(err, agent) “代理”实际上是用户信息…而不是代理 以下是我的模型: 用户: attrib
User.findOne(req.body.userId).populate('agent').exec(function(err, agent)
“代理”实际上是用户信息…而不是代理
以下是我的模型:
用户:
attributes: {
agent: {
model: 'agent',
via: 'owner'
}
}
attributes: {
owner: {
model: 'user'
}
}
代理:
attributes: {
agent: {
model: 'agent',
via: 'owner'
}
}
attributes: {
owner: {
model: 'user'
}
}
谢谢你的阅读 您理解的
填充错误<代码>填充()
不会用新信息替换上次调用。它从模型中获取属性(您在填充('attribute')
中指定),并将模型中该属性的id替换为由其id查找的另一个模型信息
让我们深入研究一下这个例子
您有用户
和代理
模型
// api/models/User.js
module.exports = {
attributes: {
agent: {
model: 'Agent',
via: 'owner'
}
}
};
// api/models/Agent.js
module.exports = {
attributes: {
owner: {
model: 'User',
via: 'agent'
}
}
};
// api/controllers/AnyController.js
module.exports = {
index: function(req, res) {
User
.findOne(req.param('userId'))
.populate('agent')
.then(function(user) {
console.log(user); // User information
console.log(user.agent); // Agent information for that user
return user;
})
.then(res.ok)
.catch(res.negotiate);
}
};
您正在调用User.findOne(userId).populate('agent').exec(function(err,User){}
,并希望仅获取我所理解的agent
。错误。它返回User
模型,其中agent
模型作为User
模型的属性
// api/models/User.js
module.exports = {
attributes: {
agent: {
model: 'Agent',
via: 'owner'
}
}
};
// api/models/Agent.js
module.exports = {
attributes: {
owner: {
model: 'User',
via: 'agent'
}
}
};
// api/controllers/AnyController.js
module.exports = {
index: function(req, res) {
User
.findOne(req.param('userId'))
.populate('agent')
.then(function(user) {
console.log(user); // User information
console.log(user.agent); // Agent information for that user
return user;
})
.then(res.ok)
.catch(res.negotiate);
}
};
您可以在此处了解更多有关人口的信息-Sails不完全支持一对一模型关联--您必须设置“外键”两边都有。有关更多信息,请参阅。我很想把这个问题作为那个问题的重复来结束,但设置略有不同。我认为OP面临的问题不太一样——这听起来更像是对Sails中一对一关联支持的误解。@sgress454我不知道。每次设置时一对一的联系一切都按预期进行。