не может обновить базу данных mongohq при запуске сервера приложений из heroku, неверный размер спецификации BSONObj: ошибка 1963524096 - PullRequest
1 голос
/ 03 ноября 2011

У меня таинственная ошибка, когда вызов rest, который я создал на моем сервере узлов, обновляет данные при запуске с локального сервера приложений, но не обновляет данные при запуске на heroku. В обоих случаях приложение вызывает один и тот же сервер базы данных, размещенный на mongohq. Разница лишь в том, где работает код сервера приложений. Я в тупике. Метод получает все правильные параметры, но выдает недопустимую ошибку размера спецификации BSONObj при работе на Heroku. Это прекрасно работает, когда я запускаю тот же код на моем сервере приложений localhost (база данных все еще находится на mongo hq, а не на локальной). Я попытался запустить запрос на поиск с теми же параметрами, и это выглядит нормально в Heroku, возвращая результаты поиска. Именно когда этот запрос на обновление отправляется с heroku, это вызывает проблемы. Любые идеи о том, что я могу сделать для дальнейшей отладки? Я использую кофе-скрипт, мангуст, экспресс и монгодб.

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 голосов
/ 03 ноября 2011

хорошо, обнаружил проблему.

У меня была зависимость как от mongo, так и от mongoose, и они вызывали некоторые проблемы, так как установка mongo для npm на npm не совпадала с моей локальной сборкой.Я удалил зависимость mongo и позволил mongoose обработать зависимость mongo, обновил синтаксис до последней версии mongoose, и она заработала.

Post.collection.update 

было изменено на

Post.update
0 голосов
/ 03 ноября 2011

В качестве третьего комментария к Post.collection.update добавьте {safe: true}, который должен быть установлен, если у вас есть обратный вызов.

...