javascript - MongoDB-Native NodeJS更新失败

标签 javascript mongodb node.js

我安装了 MongoDB 2.0 和 NodeJS 0.4.11,我正在尝试将更新插入到数据库中。这是代码:

var mongo = require('mongodb');
var db = new mongo.Db('db', new mongo.Server('localhost', 27017, {}), {});

var updatecmd = JSON.parse(JSON.stringify("{ id : " + jsonObj.VisitorID + "}"));
console.log(updatecmd);
var insertObject = JSON.parse(JSON.stringify(temp));
col.update(updatecmd, insertObject, {upsert:true}, function(err, r){console.log(err.stack); console.log(r);});

col.save() 工作正常,但是当我将它更改为 col.update 时,出现以下错误:

TypeError: Object.keys called on non-object
    at Function.keys (native)
    at Function.calculateObjectSize (/home/admin/node_modules/mongodb/lib/mongodb/bson/bson.js:76:34)
    at [object Object].toBinary (/home/admin/node_modules/mongodb/lib/mongodb/commands/update_command.js:43:112)
    at [object Object].send (/home/admin/node_modules/mongodb/lib/mongodb/connection.js:257:32)
    at [object Object].executeCommand (/home/admin/node_modules/mongodb/lib/mongodb/db.js:746:18)
    at Collection.update (/home/admin/node_modules/mongodb/lib/mongodb/collection.js:421:26)
    at addtoobject (/home/admin/mongoscript.js:127:9)
    at /home/admin/mongoscript.js:103:4
    at EventEmitter.<anonymous> (/home/admin/node_modules/lazy/lazy.js:62:13)
    at EventEmitter.<anonymous> (/home/admin/node_modules/lazy/lazy.js:46:19)

我对每一条内容都遇到了这个错误。当我做的时候

col.save(insertObject, function(err,r){});

它工作得很好。

最佳答案

不是 100% 确定这是否是问题所在,尽管看起来很有可能:

var updatecmd = JSON.parse(JSON.stringify("{ id : " + jsonObj.VisitorID + "}"));

这将输出一个字符串,而不是一个对象。放弃对 stringify 的调用,或者更好的方法是构建对象。

例如:

var ID = 123,
    oldupdatecmd = JSON.parse(JSON.stringify("{ id : " + ID + "}")), // "{id : 123}"
    newupdatecmd = { id : ID }; // {id : 123}   <--  An Object, not a string

很确定第一个参数应该是一个对象,这就是错误的样子:Object.keys called on non-object

关于javascript - MongoDB-Native NodeJS更新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528440/

相关文章:

mongodb - pymongo:在文档中搜索和编辑字段

javascript - 带有 $lookup 的 Mongo 聚合和 $group 嵌套数组

performance - MongoDB 精细搜索的许多索引

javascript - 错误 : Connection timeout at SMTPConnection. _formatError

javascript - CSS::contenteditable 中元素的焦点

javascript - 回调函数、闭包和执行上下文

javascript - Google Maps API 将监听器添加到标记数组

javascript - 预加载器中的 OpenFL 动画总是第一次卡顿

javascript - matchTemplate 后的 opencv 黑色图像

javascript - 如何避免延迟反模式