Node.js 尝试在sails.js上更新()模型时出错

Node.js 尝试在sails.js上更新()模型时出错,node.js,sails.js,Node.js,Sails.js,正如您在下面的代码中看到的,我能够找到用户,因为我得到了console.log('log1',userSettings.PASSWORD);在终端中打印,然后返回user.Settings.PASSWORD。因此,到目前为止,一切正常。 但当我尝试进行更新时,我最终得到了错误: 我收到以下错误:详细信息:RequestError:列名“id”无效 我的代码是这样的: updateSettings: function(params) { var Promise = require('b

正如您在下面的代码中看到的,我能够找到用户,因为我得到了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);

              }
            });
          }

        });
    });
  }
Sails.js/Waterline作为promise库,因此您可以将查询方法用作promise(当然,这取决于您使用的版本)

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

正如Galadocalype已经指出的,错误可能不在您发布的代码中。我假设发生错误的原因可能是您的
Customer
模型中没有sails想要用来保存
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); });
});

我不确定,但我觉得你的问题不在代码的这一部分。还可以附加堆栈跟踪吗?