从heroku运行应用服务器时似乎无法更新mongohq数据库,无效的BSONObj规格大小:1963524096错误

时间:2011-11-02 22:44:20

标签: mongodb node.js heroku coffeescript mongoose

我有一个神秘的错误,我在节点服务器上创建的休息调用在从本地应用服务器运行时更​​新数据,但在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"
}

2 个答案:

答案 0 :(得分:0)

作为Post.collection.update的第3条评论,添加{safe:true},如果你有回调,应该设置。

答案 1 :(得分:0)

好的,发现了问题。

我对mongo和mongoose都有依赖,因为在heroku上安装mongo的npm与我的本地版本不同,所以它们引起了一些问题。我删除了mongo依赖项,让mongoose处理mongo依赖项,并将语法更新为最新的mongoose版本,并且它有效。

Post.collection.update 

已更改为

Post.update