【发布时间】:2020-07-31 01:47:44
【问题描述】:
我想在异步 js 代码中修改一个对象 (userTracker)。
运行函数 (fetchUsers) 后,我想在所述对象上有一个更新的字段。
但是在修改函数中的对象后,我继续得到undefined。我怎样才能做到这一点?
我的代码:
let userTracker = {
counter : 0,
data : []
}
function fetchUsers(userTracker) {
let filter = {"some" : "conditions"}
User.find(filter).exec() // I am deliberately not calling the `limit()` function. I have a goal to achieve
.then( (users ) => {
return users.forEach((user) => {
if (userTracker.counter < 20) {
userTracker.data.push(user)
userTracker.counter += 1
} else {
return
}
})
})
.catch(err => {
console.log(err)
})
}
fetchUsers(userTracker)
console.log(userTracker) // It logs `{}`. Accessing any field on the object shows `undefined`
运行fetchUsers 函数后,如何访问填充的userTracker 对象?我想以这样的方式结束
我想要达到的目标:
userTracker = {
counter : 8,
data : [
user1, user2, user3, ...
]
}
我不擅长异步编程,非常感谢任何有关如何实现上述所需输出的帮助。
【问题讨论】:
-
如果整个
userTracker对象打印undefined我不确定这是一个异步问题。就像如果您要注释掉fetchUsers调用,它是否仍会打印undefined? -
我的错,它实际上打印了一个空对象。尝试访问其上的属性是打印 undefined
标签: javascript node.js express mongoose async-await