Nodejs localhost继续加载我的函数

时间:2016-10-28 07:19:55

标签: sql node.js sqlite

大家早上好,

如果你能为我提供一些帮助,我将非常感激。我已经很久没遇到这个问题了。

我有一个函数,在触发此函数后不会停止加载我的localhost。到目前为止我还没弄清楚如何解决它。

任何帮助都是完美的。

这是我的代码:

// Copy scene
router.post('/copy', function(req,res,call) {

if( req.param('scene') !== undefined ){

db.serialize(function () {

 db.run("CREATE TABLE temp_table as SELECT * FROM scene where id=?", req.param('scene'));
 db.run("UPDATE temp_table SET id = NULL, user_id = (SELECT id FROM users WHERE email =?)",GLOBAL.email);
 db.run("INSERT INTO scene SELECT * FROM temp_table");
 db.run("DROP TABLE temp_table");
    if(error) {
        console.log(error);
    } 
 });

 db.close();

 }
 });

非常感谢你提前

2 个答案:

答案 0 :(得分:1)

每当浏览器向服务器发送任何请求时,它都会收到响应。如果它没有得到任何响应,它将停留在超时。

如果您没有使用request执行下一次执行,或者您希望下一次操作callback call,则需要发送响应以终止replace res.send() to call(error parameter,success parameter)

router.post('/copy', function(req, res, call) {

    if (req.param('scene') !== undefined) {

        db.serialize(function() {

            db.run("CREATE TABLE temp_table as SELECT * FROM scene where id=?", req.param('scene'));
            db.run("UPDATE temp_table SET id = NULL, user_id = (SELECT id FROM users WHERE email =?)", GLOBAL.email);
            db.run("INSERT INTO scene SELECT * FROM temp_table");
            db.run("DROP TABLE temp_table");
            if (error) {
                console.log(error);
                res.send(error);//send response if error
                //or call(error);
            }
            res.send({message:'success'});//send response if success
            //or call(null,whatever you want to pass)
        });
        db.close();

    }
});

答案 1 :(得分:0)

您必须调用回调call()将控制权传递给下一个中间件,或者在中间件逻辑完成后使用res.end()呈现并结束响应。

请参阅:https://expressjs.com/en/guide/writing-middleware.html