Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 代码未终止_Node.js_Mongodb_Mongojs - Fatal编程技术网

Node.js 代码未终止

Node.js 代码未终止,node.js,mongodb,mongojs,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"; // "user

我在代码和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: []
            })
        }
    });
});

这是我代码的一部分,我也使用了process.exit0函数,但仍然没有帮助。

我认为您的问题与此相关:

这是一个例子。如果我调用db.close,程序就存在,如果我没有,它就不存在。所以,在“退出”时,进程不能被称为正确的位置

但问题是,您有一个到数据库的持久tcp连接,只要该连接在运行,脚本就不会关闭

这是一个运行一次的脚本,还是需要让它继续运行

编辑:


由于脚本只需运行一次,因此我将对您的2个数据库查询使用回调,并在最后一次回调中关闭数据库。

是否需要显式关闭与数据库的连接?看起来mongojs在后台使用了mongodb模块,在后者的示例中,有显式调用来关闭连接。我尝试了的db.close清理函数,process.on'exit',cleanup.on,但没有帮助。如果您将twit.get中的所有内容都删除到最后,它仍然挂起吗?@junapaco:没有,只是在对它得到的每个db查询进行注释后终止。没有,我只需要运行一次。这是完整的代码:。你能帮我查一下这个密码吗。。。是的,有了这样的结构,知道把db.close放在哪里会很困难。基本上,您只需要确定何时运行完查询,然后在最后一次回调中关闭db连接。这是有用的。