res.json不返回响应

时间:2018-12-05 06:55:40

标签: javascript json mongodb

我的第一段代码中的res.json有效,但在if语句的else部分中却无效。无效的块将检查数据库中的记录,然后尝试返回响应但未接收到响应。

我已经检查过,并且响应是一个字符串,我认为它应该可以作为代码的顶部成功返回该字符串,并显示在dialogflow中(即时通讯试图返回它)

已成功在res.json之前成功响应了响应,但我没有从请求源收到响应。

代码:

app.post('/webhook/orderinfo', (req, res) => {

const intent = req.body.queryResult.intent.displayName;
const domain = "chatbotdemo.myshopify.com";
const order = req.body.queryResult.parameters["number-sequence"];
if (intent.includes('Order Number')) {
    url = "https://test-hchat.com/api/orders/" + domain + "/" + order;
    request(url)
        .then(function (response) {
            order_res = JSON.parse(response)
            order_res["fullfillmentText"] = "Hi, Please find your order details below:";
            res.json({
                "fulfillmentText": JSON.stringify(order_res)
            })
        })
        .catch(function (err) {
            console.log(err)
        });

// THIS PART DOESNT RETURN THE RESPONSE.
} else {
    const domain = 'testStore'
    db.getClientsDialog(domain, intent, (response) => {
        const fullResponse = response.response
        res.json({
            fullResponse
        })
    })
}

});

数据库代码:

    getClientsDialog: function (domain, intent, callback) {
    MongoClient.connect('mongodb://efwefewf@wefwef.mlab.com:15799/wefwef', function (err, client) {
        if (err) throw err;
        var db = client.db('asdsad');
        db.collection('dialog').findOne({ domain: domain, intent: intent }, function (err, doc) {
            if (!err) {
                callback(doc)
            } else {
                throw err;
                callback(err)
            }
            client.close();
        });
        console.dir("Called findOne");
    });
}

可能是因为else语句中对res.json的第二次使用试图首先调用db,因此丢失了链接以将数据发送回去吗?

0 个答案:

没有答案