带有mongodb的nodejs:insert / find回调没有运行

时间:2013-12-01 10:42:51

标签: node.js mongodb

这是我的模型代码,用于插入一些记录。在我的工作电脑上,它工作得很好,但是当我在家用电脑上使用相同的操作系统运行它时,collection.insert没有运行它的回调,所以我得到的是长时间请求,以超时结束。没有错误,mongo db日志说“连接已接受”5次,之后没有消息。当我尝试使用find()从数据库中获取对象时也会发生同样的情况。使用mongo shell插入记录效果很好,但是使用node.js我无法做到这一点。

/*
 * POST populate locations.
 */

var MongoClient = require('mongodb').MongoClient,
    _ = require('underscore'),
    env = process.env.NODE_ENV || 'development',
    config = require('../config/config')[env]

exports.connect = function(cb) {
    MongoClient.connect(config.db, function(err, db) {
        if (err) throw err;
        cb(db)
    });
}

exports.populate = function(data, cb) {
    var self = this;
    self.connect(function(db) {
        var collection = db.collection('locations');
        collection.insert(data, function(err, docs) {
            collection.ensureIndex({
                "loc": "2dsphere"
            }, function() {
                db.close();
                cb();
            });
        });
    });
}

1 个答案:

答案 0 :(得分:0)

使用

exports.populate = function(data, cb) {
    MongoClient.connect(config.db, function(db) {
        var collection = db.collection('locations');
        collection.insert(data, function(err, docs) {
            collection.ensureIndex({
                "loc": "2dsphere"
            }, function() {
                db.close();
                cb();
            });
        });
    });
}