代码没有终止

时间:2014-01-14 21:06:46

标签: node.js mongodb mongojs

我在我的代码和mongodb中使用twitter API。这反映了数据库中的正确输出,但它没有终止。我猜问题是在下面的代码中使用db.server.find({id:myid},cb);语句。但是,我不知道如何解决这个问题。

var Twit = require('../lib/twitter'),
    conf = require('../config1');
var myid;
var twit = new Twit(conf);
var databaseUrl = "mydb2"; // "username:password@example.com/mydb"
var collections = ["server", "followers"];
var db = require("mongojs").connect(databaseUrl, collections);
twit.get('account/verify_credentials', function (err, reply) {
    myid = reply.id;

    function addToServer(myid, cb) {
        db.server.find({
            id: myid
        }, cb);
    };

    addToServer(myid, function (err, resp) {
        if (err) {
            console.log("err");
        } else if (resp.length > 0) {
            console.log("My Id present in server present");
        } else {
            console.log("New to the app.So updating server  ");
            db.server.insert({
                id: myid
            });
            db.followers.insert({
                id: myid,
                following: []
            })
        }
    });
});

P.S:这是我的代码的一部分,我也使用了process.exit(0)函数,但仍然没有帮助。

1 个答案:

答案 0 :(得分:0)

我认为您的问题与此相关:https://github.com/mafintosh/mongojs/issues/15

这是一个gist。如果我调用db.close()程序存在,如果不存在,则不会。所以process.on('exit')一定不是正确的地方。

但问题是你有一个持久的tcp连接对数据库开放,只要它正在运行,脚本就不会关闭。

这是一个一次性运行的脚本,还是你需要让这个东西继续运行?

编辑:

由于脚本只需要运行一次,我会在2次数据库查询中使用回调,并在最后一次回调中关闭数据库。