在sails.js上尝试.update()模型时出错

时间:2015-07-27 22:53:53

标签: node.js sails.js

正如您在下面的代码中看到的,我能够找到用户,因为我得到了console.log('log1',userSettings.PASSWORD);打印在终端上,我得到一个user.Settings.PASSWORD返回。所以到目前为止一切正常。 但是当我尝试进行更新时,我最终得到错误:

我收到以下错误:详细信息:RequestError:无效的列名'id'

这就是我的代码的样子:

  updateSettings: function(params) {
    var Promise = require('bluebird');
    return new Promise(function(fullfill, reject) {
      sails.models.customer.findOne()
        .where({
          USERNAME: params.username,
          PASSWORD: params.currentPassword
        }).exec(function(err, userSettings) {
          if (err) {
            reject(new Error('Error finding user'));
            console.error(err);
          }else if (userSettings) {
            console.log('log1', userSettings.PASSWORD);
            sails.models.customer.update({
              USERNAME: params.username
            },
            {
              PASSWORD: params.newPassword
            }).exec(function(err, userSettingsUpdated) {
              if (err) {
                console.error(err);
                reject(new Error('Error updating the user settings'));
              }else {
                fullfill(userSettingsUpdated);

              }
            });
          }

        });
    });
  }

1 个答案:

答案 0 :(得分:0)

Sails.js / Waterline already implements Bluebird作为promise库,因此您可以将查询方法用作承诺(当然,取决于您使用的版本)。

我冒昧地重写你的代码。我将sails.models.customer转换为Customer。如果你有使用sails.models.customer的原因,请原谅。

正如galactocalypse已经说明的那样,错误可能不在您发布的代码中。我认为可能会发生错误,因为您的Customer模型中没有您想要用来保存Customer实例的ID属性。

如果您需要更多帮助,请回复。

updateSettings: function(params) {

    var where = {
        USERNAME: params.username,
        PASSWORD: params.currentPassword
    };

    return Customer.findOne().where(where)
        .then(function(userSettings) {
            sails.log.info('log1', userSettings.PASSWORD);
            return Customer.update({ USERNAME: params.username }, {PASSWORD: params.newPassword});
        })
        .then(function(userSettingsUpdated) { /* do whatever you want here */ })
        .catch(function(err) { sails.log.error(err); });
});