Node.js 未处理的拒绝SequelizeDatabaseError:未知列';楠';在';字段列表';

Node.js 未处理的拒绝SequelizeDatabaseError:未知列';楠';在';字段列表';,node.js,sequelize.js,Node.js,Sequelize.js,我正在尝试通过sequelize更新表。但我收到错误-未处理的拒绝续集TabaseError:“字段列表”中的未知列“NaN”。我的代码是 db.billingplan.findById(req.params.id).then(result=>{ result.update({ 'poregisterReference': String(req.body.reference), 'po_number'

我正在尝试通过sequelize更新表。但我收到错误-未处理的拒绝续集TabaseError:“字段列表”中的未知列“NaN”。我的代码是

db.billingplan.findById(req.params.id).then(result=>{
            result.update({
                'poregisterReference': String(req.body.reference),
                'po_number' : req.body.po_number,
                'billing_milestone': String(req.body.billing_milestone),
                'billing_milestone_probable_date':checkDate(req.body.billing_milestone_probable_date),
                'milestone_blling_amount':req.body.milestone_billing_amount,
                'actual_billing_date': actual_billing_date,
                'bill_number':req.body.bill_number,
                'bill_amount':bill_amount,
                'tax_rate':tax_rate,
                'tds_rate':tds_rate,
                'recovery_date': recovery_date,
                'recovery_amount':recovery_amount ,
                'utr_number': String(req.body.utr_number),
                'bill_amount_with_tax': bill_amount_with_tax,
                'net_recoverable_after_tds': net_recoverable_after_tds ,
                'short_recovery': recovery_amount - net_recoverable_after_tds,
                'recovery_period': dayDiff(recovery_date, actual_billing_date )
            });
        });
我用这种方式更新时没有使用where子句,但从来没有出现过这个问题,所以我猜这不是问题所在。有人能告诉我我做错了什么吗。 以下是堆栈跟踪:

Unhandled rejection SequelizeDatabaseError: Unknown column 'NaN' in 'field list'
    at Query.formatError (D:\Users\Temp\Desktop\POregister\node_modules\sequelize\lib\dialects\mysql\query.js:228:16)
    at Query.connection.query [as onResult] (D:\Users\Temp\Desktop\POregister\node_modules\sequelize\lib\dialects\mysql\query.js:55:23)
    at Query.Command.execute (D:\Users\Temp\Desktop\POregister\node_modules\mysql2\lib\commands\command.js:30:12)
    at Connection.handlePacket (D:\Users\Temp\Desktop\POregister\node_modules\mysql2\lib\connection.js:515:28)
    at PacketParser.onPacket (D:\Users\Temp\Desktop\POregister\node_modules\mysql2\lib\connection.js:94:16)
    at PacketParser.executeStart (D:\Users\Temp\Desktop\POregister\node_modules\mysql2\lib\packet_parser.js:77:14)
    at Socket.<anonymous> (D:\Users\Temp\Desktop\POregister\node_modules\mysql2\lib\connection.js:102:29)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:547:20)
未处理的拒绝SequelizeDatabaseError:“字段列表”中的未知列“NaN”
at Query.formatError(D:\Users\Temp\Desktop\POregister\node\u modules\sequelize\lib\dialogs\mysql\Query.js:228:16)
在Query.connection.Query[作为onResult](D:\Users\Temp\Desktop\POregister\node\u modules\sequelize\lib\dialogs\mysql\Query.js:55:23)
在Query.Command.execute(D:\Users\Temp\Desktop\POregister\node\u modules\mysql2\lib\commands\Command.js:30:12)
位于Connection.handlePacket(D:\Users\Temp\Desktop\POregister\node\u modules\mysql2\lib\Connection.js:515:28)
在PacketParser.onPacket(D:\Users\Temp\Desktop\POregister\node\u modules\mysql2\lib\connection.js:94:16)
在PacketParser.executeStart(D:\Users\Temp\Desktop\POregister\node\u modules\mysql2\lib\packet\u parser.js:77:14)
在插座上。(D:\Users\Temp\Desktop\POregister\node\u modules\mysql2\lib\connection.js:102:29)
在emitOne(events.js:96:13)
在Socket.emit(events.js:188:7)
在readableAddChunk(_stream_readable.js:176:18)
在Socket.Readable.push(_stream_Readable.js:134:10)
在TCP.onread(net.js:547:20)

您可能需要检查如何定义表的关联(hasOne()、belongsTo()等)。我在代码中的某个地方定义了不必要的关联,并遇到了类似的问题。这会引入不需要的列/属性。

您可能需要检查如何定义表的关联(hasOne()、belongsTo()等)。我在代码中的某个地方定义了不必要的关联,并遇到了类似的问题。这会引入不需要的列/属性。

您应该做的是检查设置为FindOptions的值。我认为其中一个是
NaN
。我也犯了同样的错误

注意我将选项写入变量,然后打印它

let options = {
    where: {},
    limit: page?.limit ?? PHONE_LIMITATION,
    attributes: [
      Phone.col.id,
      Phone.col.phone,
      Phone.col.userId,
      Phone.col.createdAt,
      Phone.col.updatedAt,
    ],
    offset: page?.offset ?? 0,
};
console.log(options);
// other stuff

您应该做的是检查设置为FindOptions的值。我认为其中一个是
NaN
。我也犯了同样的错误

注意我将选项写入变量,然后打印它

let options = {
    where: {},
    limit: page?.limit ?? PHONE_LIMITATION,
    attributes: [
      Phone.col.id,
      Phone.col.phone,
      Phone.col.userId,
      Phone.col.createdAt,
      Phone.col.updatedAt,
    ],
    offset: page?.offset ?? 0,
};
console.log(options);
// other stuff

这个注释完全是一个猜测:Sequelize是通过串接字符串来构造SQL的,当它涉及到其中一个数字时,它得到了一个数值
NaN
,并尽职地将其转换为字符串并串接在一起,结果类似于`。。。columnName=NaN…
。当数据库引擎试图执行此操作时,它看到一个子句基本上是
。。。COLUMN=COLUMN…
,但
NaN`不作为列存在,因此存在错误。但是,sequelize执行的update语句总是用引号括起来,所以就我所知,在您的请求正文中没有定义某些内容。。。以下参数可以是以下参数之一:
poregisterReference
计费里程碑
utr\u编号
恢复期
。。。console Theme语句中的一个数值表达式将生成一个有效的
NaN
@LasseVågsætherKarlsen。。谢谢但是错误输出没有意义:/Sequelize完全是一个猜测:Sequelize是通过串接字符串来构造SQL的,当它涉及到其中一个数字时,它返回一个数值
NaN
,并尽职尽责地将其转换为字符串并串接在一起,结果类似于`。。。columnName=NaN…
。当数据库引擎试图执行此操作时,它看到一个子句基本上是
。。。COLUMN=COLUMN…
,但
NaN`不作为列存在,因此存在错误。但是,sequelize执行的update语句总是用引号括起来,所以就我所知,在您的请求正文中没有定义某些内容。。。以下参数可以是以下参数之一:
poregisterReference
计费里程碑
utr\u编号
恢复期
。。。console Theme语句中的一个数值表达式将生成一个有效的
NaN
@LasseVågsætherKarlsen。。谢谢但是错误输出没有意义:/这实际上是一个注释,而不是答案。一旦你有足够的钱,你将能够;相反,这实际上是一个评论,而不是一个答案。一旦你有足够的钱,你将能够;相反,。大大有助于快速找到问题。大大有助于快速找到问题。