我有一个神秘的错误,我在节点服务器上创建的休息调用在从本地应用服务器运行时更新数据,但在heroku上运行时不会更新数据。在这两种情况下,应用程序都在调用mongohq上托管的同一个数据库服务器。唯一的区别是app服务器代码正在运行的位置。我很难过。该方法获取所有正确的参数,但在Heroku上运行时抛出无效的BSONObj规范大小错误。当我在我的localhost应用服务器上运行相同的代码时(数据库仍在mongo hq,而不是本地),这非常有效。我已经尝试使用相同的参数运行查找查询,并且在heroku中似乎没问题,返回查找结果。只是当这个更新请求从heroku发送时才会导致问题。关于我可以做些什么来进一步调试的任何想法?我正在使用咖啡脚本,猫鼬,快递和mongodb。
app.get '/commentTest', (req, res) ->
postId = new BSON.ObjectID("4e9ef762ec8f890100000fb1")
comment = new Object()
comment.uname = "erin"
comment.msg = "Machine generated comments 6:37pm"
comment.date = "Wed Nov 02 2011 22:05:22 GMT+0000 (UTC)"
console.log "updating " + comment.msg
Post.collection.update {_id:postId}, { $push: { comments : comment } }, (err,results) ->
if not err
console.log "finished updating comment" + results
res.send 200, results
else
console.log "error getting post id" + postId
res.send err
这是错误
{"stack":"Error: Invalid BSONObj spec size: 1963524096 (00000975) first element:dated_at:
?type=112
at [object Object].<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js:404:18)
at [object Object].emit (events.js:67:17)\n at [object Object].<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connections/server.js:97:12)
at [object Object].emit (events.js:64:17)\n at Socket.<anonymous> (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection.js:161:16)
at Socket.emit (events.js:64:17)\n at Socket._onReadable (net.js:676:14)
at IOWatcher.onReadable [as callback] (net.js:177:10)","message":"Invalid BSONObj spec size: 1963524096 (00000975) first element:dated_at: ?type=112 "}
我的package.json依赖项
, "dependencies": {
"express": "2.4.3"
, "jade": ">= 0.0.1"
, "mongodb": "0.9.6-7"
, "colors": "0.5.0"
, "mongoose": ">= 2.0.4"
, "facebook-client": "1.3.0"
, "async": ">= 0.1.12"
}
答案 0 :(得分:0)
作为Post.collection.update的第3条评论,添加{safe:true},如果你有回调,应该设置。
答案 1 :(得分:0)
我对mongo和mongoose都有依赖,因为在heroku上安装mongo的npm与我的本地版本不同,所以它们引起了一些问题。我删除了mongo依赖项,让mongoose处理mongo依赖项,并将语法更新为最新的mongoose版本,并且它有效。
Post.collection.update
已更改为
Post.update