SailsJS更新和mySQL自定义ID列无法正常工作

时间:2018-03-14 09:46:22

标签: mysql sails.js waterline

在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为真不行。

0 个答案:

没有答案