我注意到我在帖子上得到的回复和我得到的回复不一样。特别是,协会。
引用'与其他新记录关联时创建新记录' https://github.com/balderdashy/sails-docs/blob/master/reference/blueprint-api/Create.md
我使用sails new testProj
,然后sails generate api pony
和sails generate api pet
从文档中重新创建方案,然后将模型更新为具有一对一关联。
小马
module.exports = {
attributes: {
pet: {
model: 'pet'
}
}
};
小马
module.exports = {
attributes: {
pet: {
model: 'pet'
}
}
};
宠物
module.exports = {
attributes: {
pony: {
model: 'pony'
}
}
};
然后,sails lift
离开。
POST /pony
JSON Req
{
"name": "Pinkie Pie",
"hobby": "ice skating",
"pet": {
"name": "Gummy",
"species": "crocodile"
}
}
JSON Res
{
"name": "Pinkie Pie",
"hobby": "ice skating",
"pet": 1,
"createdAt": "2014-11-21T19:18:09.161Z",
"updatedAt": "2014-11-21T19:18:09.161Z",
"id": 1
}
正如您所看到的,res
ponse不包含完整的宠物对象,只包括它的id。在文档中,它显示了返回的完整对象。
条目和关联肯定是成功创建的,
GET - /pony/1
{
"pet": {
"name": "Gummy",
"species": "crocodile",
"createdAt": "2014-11-21T19:18:09.157Z",
"updatedAt": "2014-11-21T19:18:09.157Z",
"id": 1
},
"name": "Pinkie Pie",
"hobby": "ice skating",
"createdAt": "2014-11-21T19:18:09.161Z",
"updatedAt": "2014-11-21T19:18:09.161Z",
"id": 1
}
这是文档中的错误还是代码中的错误?无论哪种方式,我们是否可以指定我们希望返回关联?
一对一关联只是作为链接ID出现,很多人根本没有出现。当我看到toObject()
选项时,我正在查看waterline
showJoins
函数的另一个问题。看起来它可能与此有关。
此外,这种一对一关联实际上只是作为单向关联创建的。
完成上述操作后:
GET - /pet/1
{
"name": "Gummy",
"species": "crocodile",
"createdAt": "2014-12-03T20:50:31.346Z",
"updatedAt": "2014-12-03T20:50:31.346Z",
"id": 1
}
请注意,不会返回任何小马。
只是为了确保......
GET - /pony/1/pet
{
"name": "Gummy",
"species": "crocodile",
"createdAt": "2014-12-03T20:50:31.346Z",
"updatedAt": "2014-12-03T20:50:31.346Z",
"id": 1
}
GET - /pet/1/pony
Res
Specified record (1) is missing relation 'pony'
我做错了什么?
答案 0 :(得分:0)
您需要在定义双向关系时提供via
属性,否则它们将被假定为不相关的单向连接。
小马
module.exports = {
attributes: {
pet: {
model: 'pet',
via: 'pony'
}
}
};
宠物
module.exports = {
attributes: {
pony: {
model: 'pony',
via: 'pet'
}
}
};
仅在many-many
和one-many
关系的文档中提到过,这可能是一个错误。