如何使用快速POST将来自不同文件的promise呈现到html页面

时间:2017-12-15 16:13:05

标签: javascript node.js express promise

我从documentdb查询了一些结果,我想在我的网页上显示它们。我在查询函数中使用promises,这些函数在控制台上显示结果很好,但是当我在app.post函数中使用它们时,网页上的结果是[object promise]

数据库调用

function query(queryString, callback) {
    return new Promise((resolve, reject) => {
        client.queryDocuments(collectionUrl, queryString).toArray((err, results) => {
            if (err) {
                reject(err);
            } else {
                for (var queryResult of results) {
                    resultString = JSON.stringify(queryResult);
                    console.log(`\tQuery returned number of ignition off events: ${resultString}`);
                    return resultString;
                }
                resolve(results);
            }
        });
    });
};

app文件

app.get("/", function (req, res) {
    res.render("index", {action: null});
});
app.post("/", function (req, res) {
    let actionText = Task.getDatabase().then(() => Task.query(usercount, Task.getCollection(config.collection.collectionIdUsers)));
    res.render("index", {action: actionText});
});

如何将查询功能的结果输出到我的网页?

我希望我的解释清楚,先谢谢。

1 个答案:

答案 0 :(得分:0)

你可以直接在代码中看到它,你没有回来"价值"你回来了Promise

return new Promise((resolve, reject) => {

那么猜猜那里保存了什么 - 你已经回复的承诺:

let actionText = Task.getDatabase().then(() => Task.query(usercount,Task.getCollection(config.collection.collectionIdUsers)) );

你必须承诺从承诺中获取价值。

app.post("/", function (req, res) {
    Task.getDatabase()
    .then(() => Task.query(usercount,Task.getCollection(config.collection.collectionIdUsers)) )
    .then(actionText => {
        res.render('index',{action : actionText});
    })
});