Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Mongoose在MongoDB集合中增加一个字段_Node.js_Mongoose - Fatal编程技术网

Node.js 使用Mongoose在MongoDB集合中增加一个字段

Node.js 使用Mongoose在MongoDB集合中增加一个字段,node.js,mongoose,Node.js,Mongoose,我正试图通过Mongoose在MongoDB数据库的集合中增加一个值。这是猫鼬网站上显示的演示代码: var conditions = { name: 'borne' } , update = { $inc: { visits: 1 }} , options = { multi: true }; Model.update(conditions, update, options, callback) 我有这样的想法: var conditions = { "uniqueId" : it

我正试图通过Mongoose在MongoDB数据库的集合中增加一个值。这是猫鼬网站上显示的演示代码:

var conditions = { name: 'borne' }
  , update = { $inc: { visits: 1 }}
  , options = { multi: true };

Model.update(conditions, update, options, callback)
我有这样的想法:

var conditions = { "uniqueId" : itemId };
var update;
if(increase)
    update = {$inc : {inStock : 1}};
else
    update = {$dec : {inStock : 1}};
Item.update(conditions, update, {}, callback);
正如你所看到的,这与猫鼬的网站代码没有太大区别

问题是,当执行这段代码时,我的集合中有一个名为
$dec
(或
$inc
)的字段,该字段的形式为
{inStock:1}
。我只想增加集合的inStock条目。在模式中,我有:

var ItemToSell = new Schema({
    uniqueId : { type: Number, index: true }
  , name     : String 
  , type     : String
  , inStock  : Number
});
有人能指出我做错了什么吗? 非常感谢。

a)确保您的猫鼬是最新的。较旧版本的
Model.update
操作存在很大的缺陷,因为Mongoose试图推断您何时仅仅传递了一个新对象,在这种情况下,它会将
update
对象转换为
$set
操作


B) 尝试从函数调用中删除空的
{}
。它是可选的,通过传递一个空对象而不是实际的选项,您可能会混淆Mongoose来设置
{safe:false}
选项,这也可能导致您的问题。我还没有检查源代码以确认这可能是问题所在,但可能值得一试。

谢谢您的回复。通过删除空的
{}
我解决了将
{“$dec”:{“inStock”:1}}
添加到集合中的问题。你是对的,我使用的是猫鼬的旧版本,但我仍然没有解决这个问题。现在看来它对收藏品没有任何作用。好吧,我解决了这个问题。既然我更新了Mongoose的版本,回调函数的
err
输入提供了一些信息。我发现,
$dec
不存在,因此为了减少,我必须输入一个负数(
{$inc:{inStock:-1}}
)。谢谢你的尝试,它帮助了很多!您知道如何将“inStock”作为参数吗?