gpt4 book ai didi

node.js - Mongoose throwing 在使用变量代替显式字符串时,必须指定字段错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:25 25 4
gpt4 key购买 nike

我的 Mongoose 命令

    Modelname.update(
{$and :[ {'field1' : field1}, {'field2' : field2}, {'field3' : field3}, {'field4' : field4}]},
{
$set : {'timestamp' : timestamp},
$inc : {speed_string: 1}
},{upsert: true}, function (err, record)
{
if (err)
{

}
else
{

}
});

正如您所看到的,speed_string 是一个变量,应该在实际文档中增加或更新插入。我在查询之前记录了它,它确实是一个字符串(而不是像错误读取的那样为空),但查询没有执行,我收到此错误。

"errmsg":"'$inc' is empty. You must specify a field like so: {$inc: {: ...}}"}

当我用 'expected_string' 替换该变量时,一切正常,但更令人困惑。

我做错了什么,感谢帮助。

最佳答案

要使用变量作为字段名称,您需要使用 computed property name变量括在方括号中的语法:

Modelname.update(
{$and :[ {'field1' : field1}, {'field2' : field2}, {'field3' : field3}, {'field4' : field4}]},
{
$set : {'timestamp' : timestamp},
$inc : {[speed_string]: 1}
},{upsert: true}, function (err, record)
{
...
});

此外,查询中的多个术语会隐式进行 AND 运算,因此您可以将查询对象简化为:

Modelname.update(
{
'field1' : field1,
'field2' : field2,
'field3' : field3,
'field4' : field4
},
{
$set : {'timestamp' : timestamp},
$inc : {[speed_string]: 1}
},{upsert: true}, function (err, record)
{
...
});

关于node.js - Mongoose throwing 在使用变量代替显式字符串时,必须指定字段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43333915/

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