javascript - 如何访问函数表达式nodejs中的变量
问题描述
有没有办法data
在函数之外获取变量的内容。我被困住了,在stackoverflow中查看了各种论坛,但失败了。我正在尝试从猫鼬模型中检索数据并将这些结果推送到一个数组中results
,当我打印results
数组时,我得到空数组。
var results = []
Model.find({firstName:name}, function(err,data){
if(err)
throw err;
data.forEach(function(element) {
console.log(element);
results.push(element);
});
});
console.log(results) --> []
但是当我尝试打印里面的数据ForEach
时,我得到了下面列出的结果。
0 => { _id: 5dc9953a2168993711903698,
id: 763,
firstName: 'Deepak',
lastName: 'Kalra',
image_id: 'No',
logged: false,
__v: 0
}
1 => {
_id: 5dc995546f0f88372080ea36,
id: 511,
firstName: 'Deepak',
lastName: 'Kalra',
image_id: 'No',
logged: false,
__v: 0
}
整个代码
alexa.intent("FirstName", {
"slots": { "name": "AMAZON.FIRST_NAME" },
"utterances": [
"sure {-|name}","{-|name}","my name is {-|name}"
]
},
function(request, response) {
var name = 'Deepak';
try {
var results = await Model.find({firstName:name});
console.log(results)
} catch (error) {
// Handle error.
}
// Model.find({firstName:name}, function(err,data){
// if(err)
// throw err;
// data.forEach(function(element) {
// console.log(element);
// results.push(element);
// });
// });
console.log(results);
});
有什么办法可以解决。请帮我
解决方案
因为,console.log(results)
之前执行Model.find
完毕。
你可以在这里做两件事:
- 放在
console.log(results)
回调里面。 - 用于
async/await
获得类似的行为。
示例(回调):
Model.find({firstName:name}, function(err,data){
if(err)
throw err;
console.log(data); // data is already an array
});
示例(异步/等待):
try {
var results = await Model.find({ firstName: name });
console.log(results)
} catch (error) {
// Handle error.
}
Model.find
已经返回了一个文档数组,因此您不必运行循环将它们推送到数组中。
更新
alexa.intent("FirstName", {
"slots": { "name": "AMAZON.FIRST_NAME" },
"utterances": [
"sure {-|name}", "{-|name}", "my name is {-|name}"
]
},
async function (request, response) {
var name = 'Deepak';
try {
var results = await Model.find({ firstName: name });
console.log(results)
} catch (error) {
// Handle error.
}
});
注意async
函数前面的。
推荐阅读
- blockchain - 区块链共识算法分类
- sqoop - Apache Kylin 和 Sqoop - 有没有办法编辑 Sqoop 生成的 SQL 语句?
- javascript - 有没有更好的方法来使用 forEach 循环数组项并使用 setTimout/Interval 重复它
- python - TypeError:“PhotoImage”对象不可调用 - Python Tkinter
- python-3.x - 使用 Pymc3 glm 的样本外后验和线性预测
- javascript - 如何更新我的功能以显示每秒滴答的时钟
- javascript - 同一个函数内的settimeout
- python - 为什么引号在错误消息上重复?
- asp.net - 登录后立即过期的 ASP.NET 会话
- html - 我在搞乱特异性吗?这是怎么回事?