gpt4 book ai didi

node.js - 无法更新 Sails.js 模型实例中的属性

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:43 24 4
gpt4 key购买 nike

更新到 Sail.js 0.10.1 后,我在尝试更新模型特定实例的属性字段时遇到错误。我也尝试过执行 User.find() ,然后设置 user.attribute = someValue ,然后调用 user.save() ,并且发生了同样的错误。

相关代码如下:

// TODO: Save user params (for edit/updates)
save: function(req, res) {
var params = req.params.all(),
updateParams = {};

if (params['publicKey'] != '') {
sails.log.debug('Updating public key: ' + params['publicKey']);
updateParams['publicKey'] = params['publicKey'];
}

if (params['email'] != '') {
updateParams['email'] = params['email'];
}

sails.log.debug(updateParams);

User.update({ id: params['id'] }, updateParams, function (err) {
if (err) sails.log.error(err);

req.session.messages = { success: ['Successfully updated user profile'] };
if (req.session.user.admin) {
return res.redirect('/admin/manage_users');
} else {
return res.redirect('/');
}
});
},

我得到的错误是:

error: Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_BAD_FIELD_ERROR: Unknown column 'user.undefined' in 'order clause'
at Query.Sequence._packetToError (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
at Query.ErrorPacket (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:82:18)
at Protocol._parsePacket (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:213:24)
at Parser.write (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:62:12)
at Protocol.write (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:37:16)
at Socket.<anonymous> (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:75:28)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:746:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
--------------------
at Protocol._enqueue (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:110:48)
at PoolConnection.Connection.query (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:166:25)
at Query._callback (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/lib/adapter.js:1008:22)
at Query.Sequence.end (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:78:24)
at Query._handleFinalResultPacket (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:143:8)
at Query.EofPacket (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:127:8)
at Protocol._parsePacket (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:213:24)
at Parser.write (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:62:12)
at Protocol.write (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:37:16)
at Socket.<anonymous> (/home/kevin/workspace/test_moocRP/moocRP/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:75:28)

Details: Error: ER_BAD_FIELD_ERROR: Unknown column 'user.undefined' in 'order clause'

一些指导将不胜感激。

编辑:我正在使用 sails-mysql。

编辑:我在本地 MySQL 数据库中打开了日志记录并监视正在执行的查询。以下是相关行:

140804 18:25:19    97 Query SELECT `user`.`id`, `user`.`firstName`, `user`.`lastName`, `user`.`email`, `user`.`registered`, `user`.`admin`, `user`.`publicKey`, `user`.`keyEmail`, `user`.`createdAt`, `user`.`updatedAt` FROM `user` AS `user`  WHERE `user`.`id` = "991426"  LIMIT 1
140804 18:25:41 98 Query SELECT `user`.`id`, `user`.`firstName`, `user`.`lastName`, `user`.`email`, `user`.`registered`, `user`.`admin`, `user`.`publicKey`, `user`.`keyEmail`, `user`.`createdAt`, `user`.`updatedAt` FROM `user` AS `user` WHERE `user`.`id` = "991426"
98 Query UPDATE `user` AS `user` SET `publicKey` = 'test2', `email` = '', `updatedAt` = '2014-08-04 18:25:41' WHERE `user`.`id` = "991426" ORDER BY `user`.`undefined` DESC
97 Query SELECT `user`.`id`, `user`.`firstName`, `user`.`lastName`, `user`.`email`, `user`.`registered`, `user`.`admin`, `user`.`publicKey`, `user`.`keyEmail`, `user`.`createdAt`, `user`.`updatedAt` FROM `user` AS `user`

我的用户模型定义为:

// Instance variables
id: {
type: 'STRING',
required: true,
unique: true
},
firstName: {
type: 'STRING',
required: true
},
lastName: {
type: 'STRING',
required: true
},
email: {
type: 'STRING',
email: true,
unique: true,
},
registered: {
type: 'BOOLEAN',
defaultsTo: false
},
admin: {
type: 'BOOLEAN',
defaultsTo: false
},
publicKey: {
type: 'TEXT',
required: true
},
keyEmail: {
type: 'TEXT',
email: true,
required: true
},

// Instance methods
toJSON: function() {
var obj = this.toObject();
delete obj._csrf;
return obj;
}

updateParams: { publicKey: 'test2', email: '' }

params['id']:991426

最佳答案

我认为这里的问题是您没有为模型设置主键。在 id 字段上设置 primaryKey: true,错误就会消失。感谢您的报告;如果您没有主键,我们可能需要修补 Waterline 以发出警告。而且,你知道,不要崩溃:)

关于node.js - 无法更新 Sails.js 模型实例中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25129742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com