Node.js 节点将值传递给结果函数
下面是我的代码的样子Node.js 节点将值传递给结果函数,node.js,Node.js,下面是我的代码的样子 console.log(badgeList[i].id) //will output the badgeList id BadgeTriggered.findOne({ schoolID: mongoose.mongo.ObjectId(schoolID), badgeID: mongoose.mongo.ObjectId(badgeList[i].id)}).then(function (err, data) { console.log("get data")
console.log(badgeList[i].id) //will output the badgeList id
BadgeTriggered.findOne({ schoolID: mongoose.mongo.ObjectId(schoolID), badgeID: mongoose.mongo.ObjectId(badgeList[i].id)}).then(function (err, data) {
console.log("get data")
console.log(data)
console.log("and show badgeList below: ")
console.log(badgeList[i].id) //badgeList[i] is undefined here
})
正如您在上面看到的,
badgeList[i]
在我尝试打印底部控制台low中的值时实际上不可用。那么我如何将badgeList
传递给findOne
结果函数呢?这很奇怪。全局变量可以在回调中访问。我刚刚测试过,似乎无法重现您的问题。@fsociety我的错我的错。为了简单起见,我编辑了代码,但把它弄糟了。请查看更新的代码。我们使用的短语“如你所见”有所不同<代码>徽章列表在您的回调范围内,因此其他东西正在发挥作用。最有可能的是i
不是您认为的那样,这可能是由于多种原因造成的,比如循环完成后回调正在运行,这意味着i
将超过数组的长度。回调是异步的,通常会在传递回调的代码完成后执行。@I您介意在声明badgeList的地方共享全局代码吗?