Sails 1.0 无法访问自动生成的关联实体路由
Sails 1.0 cannot access autogenerated associated entity routes
我在客户和预算之间有如下关联:
//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
returns 关联客户的预算和 ID。
GET /budget/1/client
returns 没有填充的客户端 ID(正如我在 documentation 中看到的那样,它应该被填充)。
GET /client/1
return客户属性,没有与预算相关的字段。
GET /client/1/budgets
return未找到 404
那么我可能遗漏了什么?
只是生成一个方向关联,我已经与官方文档和第三方示例进行了比较,我的代码看起来不错。
提前致谢!
更新:
我还在找麻烦,如果我 运行 使用 --silly
选项航行,它表明有以下可用路线:
Binding route :: get /client/:parentid/budgets POLICY: localize
Binding route :: get /client/:parentid/budgets POLICY: isauth
Binding route :: get /client/:parentid/budgets BLUEPRINT: populate
但是如果我尝试访问 returns 404 Not Found 并且控制台显示以下错误,由来自 Sails 核心代码的 populate.js 抛出:
verbo: In populate
blueprint action: Specified parent record (1)
does not have a budgets
.
更新2:
使用 sails 控制台进行调试我已经看到关联已正确生成。给定 Client.findOne({id: 1}).populate('budgets').then((client)=>{console.log(client)})
打印客户属性和相关预算,但仍然 return 404 Not Found when: GET /client/1/budgets
我已经创建了快速演示,它对我来说似乎工作正常。
对于演示,我使用了 sails 版本 1.2.2 和 sails-disk 作为数据库,并且在模型属性如下
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'
}
},
};
如果有帮助请告诉我
感谢 SailsJS 团队,我们发现了问题,它与第三方包有关,只需将其从我的项目中删除。
sails-hook-deep-orm
谁的主人被警告过。我希望有同样问题的人能达到这个 post.
谢谢大家!!
问题可用there
我在客户和预算之间有如下关联:
//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
returns 关联客户的预算和 ID。
GET /budget/1/client
returns 没有填充的客户端 ID(正如我在 documentation 中看到的那样,它应该被填充)。
GET /client/1
return客户属性,没有与预算相关的字段。
GET /client/1/budgets
return未找到 404
那么我可能遗漏了什么?
只是生成一个方向关联,我已经与官方文档和第三方示例进行了比较,我的代码看起来不错。
提前致谢!
更新:
我还在找麻烦,如果我 运行 使用 --silly
选项航行,它表明有以下可用路线:
Binding route :: get /client/:parentid/budgets POLICY: localize
Binding route :: get /client/:parentid/budgets POLICY: isauth
Binding route :: get /client/:parentid/budgets BLUEPRINT: populate
但是如果我尝试访问 returns 404 Not Found 并且控制台显示以下错误,由来自 Sails 核心代码的 populate.js 抛出:
verbo: In
populate
blueprint action: Specified parent record (1) does not have abudgets
.
更新2:
使用 sails 控制台进行调试我已经看到关联已正确生成。给定 Client.findOne({id: 1}).populate('budgets').then((client)=>{console.log(client)})
打印客户属性和相关预算,但仍然 return 404 Not Found when: GET /client/1/budgets
我已经创建了快速演示,它对我来说似乎工作正常。
对于演示,我使用了 sails 版本 1.2.2 和 sails-disk 作为数据库,并且在模型属性如下 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'
}
},
};
如果有帮助请告诉我
感谢 SailsJS 团队,我们发现了问题,它与第三方包有关,只需将其从我的项目中删除。
sails-hook-deep-orm
谁的主人被警告过。我希望有同样问题的人能达到这个 post.
谢谢大家!!
问题可用there