Node.js 尝试在sails.js上更新()模型时出错
正如您在下面的代码中看到的,我能够找到用户,因为我得到了console.log('log1',userSettings.PASSWORD);在终端中打印,然后返回user.Settings.PASSWORD。因此,到目前为止,一切正常。 但当我尝试进行更新时,我最终得到了错误: 我收到以下错误:详细信息:RequestError:列名“id”无效 我的代码是这样的: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
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); });
});
我不确定,但我觉得你的问题不在代码的这一部分。还可以附加堆栈跟踪吗?