【问题标题】:Mongoskin throws MongoError: Connection Closed By Application] name: 'MongoError'Mongoskin 抛出 MongoError: Connection Closed By Application] name: 'MongoError'
【发布时间】:2015-09-16 01:09:14
【问题描述】:

Mongoskin NPM 包用于 Node.js 到远程 Mongodb 数据库中的find 文档。然而,做一个简单的find 操作会抛出一个 MongoError。插入文档没问题。出了什么问题?

使用节点 v0.12.0、mongoskin v1.4.13、mongodb v3.0.4。

代码

var mongo = require('mongoskin')
var db = mongo.db('mongodb://domain.com:27017/dbname', {native_parser: true})

db.collection('animals').find({}, function(err, result) {
    result.each(function(err, doc) {
        console.log(err)
    })

    db.close()
})

这会引发错误:

{ [MongoError: Connection Closed By Application] name: 'MongoError' }

更新

db.collection('animals').find({}, function(err, result) {
    if(err)
        console.log(err)

    console.log('result.length: ' + result.length)

    result.each(function(index, doc) {
        console.log(index)

        if(index == result.length -1)
            db.close()
    })
})

返回

result.length: undefined
null
null

【问题讨论】:

  • 如果您评论db.close(),您的程序是否完美运行?

标签: node.js mongodb mongoskin


【解决方案1】:

我相信您的程序 connection 会在 each 完成其工作之前关闭。尝试类似:

db.collection('animals').find({}, function(err, result) {
    result.each(function(index, doc) {
        console.log(index)
        //if each finish then db.close()
        if(index == result.length-1)
           db.close()
    })
})

【讨论】:

  • 返回的输出是 2 行 null,我没有返回 bash。更新了更多细节的问题
  • 为什么显示result.length undefined? console.log(result) 的输出是什么?
  • 如果我添加console.log(result),它不会输出任何东西......光标只是卡在那里没有闪烁,我没有返回到bash
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2019-11-04
  • 2020-05-05
  • 2019-06-28
  • 2019-08-27
  • 2023-02-16
  • 1970-01-01
相关资源
最近更新 更多