MongoDB-Native NodeJS更新失败
MongoDB-Native NodeJS Update Fails
我有一个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
相关文章:
- 解析云代码部署失败,并显示消息“更新失败,出现内部错误”
- 为什么当媒体查询更新 CSS 规则时,修改 CSS 规则会失败
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- 更新失败,无法加载触发器.错误为“未捕获” 您必须使用 Parse.initialize 指定密钥
- JQuery AJAX调用本地更新脚本在Safari中失败,在Chrome和FF中工作
- jquery多选列表更新失败
- 更新到sql失败
- Rails模式表单-在表单提交失败后,用html.erb文件中的内容更新弹出窗口
- 在所有跨度上循环并更新一个失败的whit JQuery
- 从淘汰2.3更新到3.2时,嵌套模板失败
- 由于斜杠字符,Firebase多路径更新失败
- jQuery用done更新值,失败
- 付款处理成功,但数据库更新失败
- 对象动画-位置更新失败
- Firefox失败-使用文档后.写入和更新位置.哈希导致页面刷新
- 创建新对象失败,错误代码:没有找到用于更新/删除的对象
- jQuery -数据库访问失败后的更新按钮图标
- 我是如何失败的更新状态变量在ReactJS
- AngularJS函数更新json字符串值失败
- update'执行失败on 'ApplicationCache':没有应用程序缓存要更新