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

正如你将在下面的代码中看到,我能find用户,因为我得到了console.log('log1',userSettings.PASSWORD); 打印在terminal,我得到一个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 已经实现了Bluebird作为承诺库,所以你可以使用查询方法作为承诺(当然取决于你使用的版本)。

我冒昧地重写你的代码。 我将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); }); });