如何在collection.find({})中返回值

时间:2016-05-30 23:20:25

标签: node.js mongodb

var shortLinks = [];

Link.find({}, function (err, links) {

    if (err) {
        console.log(err);

    } else {

        links.map(link => {
            shortLinks.push(link.shortLink);
        });

    }
    console.log(shortLinks);//shortLinks has values, all okey
});

console.log(shortLinks); //shortLinks is empty

我需要在Link.find({})之后使用shortLinks,但是数组为空。 需要返回短链接。

2 个答案:

答案 0 :(得分:0)

回调。 function(err, links)是异步调用的,因此在调用该函数之前不会填充shortLinks。由于回调的工作原理,首先会调用您的底部console.log

https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_and_Using_Callbacks

答案 1 :(得分:0)

需要使用承诺:

const shortLinks = [];

const getShortLinks = Link.find({}, function (err, links) {

    if (err) {
        console.log(err);

    } else {

        links.map(link => {
            shortLinks.push(link.shortLink);
        });

    }
});

getShortLinks.then(function(links){
    console.log(shortLinks);
}, function(err){
    console.log(err);
});