我有一个可以保存Cat信息的模式。然后我想创建一个包含所有cat_urls的数组,但是当我在dbs调用之外调用数组时,数组是空的
var cat_urls = [];
Cat.find(function (err, data) {
var stringify = JSON.stringify(data)
content = JSON.parse(stringify);
content.forEach(function (result) {
cat_urls.push(result.cat_url);
})
console.log(cat_urls, 'here')
})
console.log(cat_urls, 'here not working') // I want cat_urls to also be populated here
所以在Cat.find()调用中,cat_urls的值如下:
[ 'www.hello.co.uk', 'www.testing.co.uk' ] 'here'
但在cat_urls = []
我想这与节点js不按特定顺序运行这一事实有关,但我该如何解决这个问题呢?
答案 0 :(得分:1)
我认为它正常工作但你的find
函数会返回一个异步解析的承诺。
尝试:
var cat_urls = [];
Cat.find(function (err, data) {
var stringify = JSON.stringify(data)
content = JSON.parse(stringify);
content.forEach(function (result) {
cat_urls.push(result.cat_url);
})
console.log(cat_urls, 'here')
}).then(function(){
// Promise has completed, now this console log will trigger only after the cat's names are pushed.
console.log(cat_urls);
})