在SailsJS中,我创建了一个包含自定义主键的模型配置文件,如下所示:
module.exports = {
tableName: 'tbl_profiles',
autoPK: false,
autoCreatedAt: false,
autoUpdatedAt: false,
attributes: {
user_id: {
type: 'integer',
size: 11,
columnName: 'user_id',
unique: true,
primaryKey: true,
},
...
现在,在调用蓝图路径更新用户配置文件时,我收到以下错误:
ER_BAD_FIELD_ERROR: Unknown column 'tbl_profiles.id' in 'where clause'
调试此问题(看到问题SailsJS and mySQL custom ID name not working with blue prints没有帮助)我发现更新是在数据库中的所有权利进行的,并且记录已更改,但在控制器回调函数中出现错误,状态400为尽管如此:
Profiles.update({user_id: req.param('id')}, req.body).exec(function(err, profile) {
if (err) {
return res.status(400).json(err);
} else {
return res.status(200).json(profile);
}
});
跟踪/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14中涉及的SQL,似乎在更新完成后执行以下语句(注意final WHERE子句):
SELECT `tbl_profiles`.`user_id`,
`tbl_profiles`.`lastName`,
`tbl_profiles`.`firstName`,
`tbl_profiles`.`date_of_birth`,
`tbl_profiles`.`address_line1`,
`tbl_profiles`.`address_line2`,
`tbl_profiles`.`zip_code`,
`tbl_profiles`.`city`,
`tbl_profiles`.`gender`,
`tbl_profiles`.`country_id`,
`tbl_profiles`.`phone`,
`tbl_profiles`.`user_id`
FROM `tbl_profiles` AS `tbl_profiles`
WHERE `tbl_profiles`.`id` = undefined
我可以在哪里设置SailsJS / Waterline以使用自定义列ID?在模型的开头或结尾设置autoPK为真不行。