我在“客户”和“预算”之间有如下关联:
//Client.js
module.exports = {
primaryKey: 'id',
attributes: {
id: {
type: 'number',
unique: true,
autoIncrement: true
},
name: {
type: 'string'
},
phone: {
type: 'string',
unique: true
},
email: {
type: 'string',
unique: true
},
budgets: {
collection: 'budget',
via: 'client'
},
}
};
// Budget.js
module.exports = {
primaryKey: 'id',
attributes: {
id: {
type: 'number',
unique: true,
autoIncrement: true
},
client: {
model: 'client'
},
budgetItems: {
type: 'json'
}
}
};
因此,POST对这两个实体都起作用,因此我可以创建它们,但是:
GET /budget/1
返回预算和关联客户的ID。
GET /budget/1/client
不填充就返回客户端ID(如我在documentation中所见,应填充)。
GET /client/1
返回客户属性,并且没有与预算相关的字段。
GET /client/1/budgets
返回404未找到
那我可能会想念什么?
我只是生成一个方向关联,并且已经与官方文档和第三方示例进行了比较,我的代码看起来还不错。
谢谢!
更新:
我仍在寻找麻烦,如果我使用--silly
选项进行航行,则表明存在以下路线:
绑定路线::获取/ client /:parentid / budgets政策:本地化
绑定路径::获取/ client /:parentid / budgets策略:isauth
绑定路线::获取/ client /:parentid / budgets BLUEPRINT:填充
但是如果我尝试访问则返回404 Not Found,并且控制台显示以下错误,由Sails核心代码的populate.js抛出:
verbo:在
populate
蓝图操作中:指定的父记录(1) 没有budgets
。
Update2:
使用Sails控制台进行调试我已经看到正确生成了关联。给定Client.findOne({id: 1}).populate('budgets').then((client)=>{console.log(client)})
,可打印客户端属性和相关的预算,但在以下情况下仍返回404 Not Found:GET /client/1/budgets
答案 0 :(得分:1)
我已经创建了快速演示,对我来说似乎工作正常。
对于演示,我使用了帆版本 1.2.2 和 sails-disk 作为数据库,并且Model属性存在一些细微的差异,如下所示 Client.js
module.exports = {
attributes: {
name: {
type: 'string'
},
phone: {
type: 'string',
unique: true,
required: true
},
email: {
type: 'string',
unique: true,
required: true
},
budgets: {
collection: 'Budget', // <<== B is capital here
via: 'client'
},
},
};
Budget.js
module.exports = {
attributes: {
client: {
model: 'Client' // <<== C is capital here
},
budgetItems: {
type: 'json'
}
},
};
让我知道这是否有帮助
答案 1 :(得分:1)
感谢SailsJS团队,我们已经找到了问题,它与第三方软件包有关,只需要从我的项目中删除它即可。
已警告sails-hook-deep-orm
的所有者。我希望有同样问题的人能找到这篇文章。
还是谢谢你!
该问题可用there