Mongoose - 无法将findById的结果推送到数组中

时间:2017-06-08 20:59:38

标签: javascript arrays function mongoose

我正在尝试将findById的结果推送到现有数组。我的代码如下所示:

var targetArray = []; var groupId; //从另一个函数中获取ID。

Group.findById((groupId), (error, group) => {
  targetArray.push(group.toObject());
  console.log(targetArray);
}
console.log(targetArray);

第一个日志返回包含该组的数组,第二个日志返回一个空数组[]。

我尝试使用" .toObject()",我甚至尝试将一个简单的字符串推入数组。离开这个功能后,一切都消失了。

我不知道这是一个特定于猫鼬的问题还是一般的javascript,但通常如果我把某些东西放到一个数组中它就不会消失它自己的。

你们(和女孩们)可能会指出我做错了吗?

1 个答案:

答案 0 :(得分:0)

这实际上更多是javascript如何处理异步代码。

这种情况正在发生,因为你传递给findById一个回调函数,该函数将在javascript调用堆栈中运行一段时间。这意味着只要您调用findById函数传递这些参数,javascript就会运行底部console.log,在这种情况下,数组它仍然是空的。

作为参数传递的函数将在mongoose收到mongo驱动程序的确认时立即运行,并显示一些错误或某些数据。

事实是,这是预期的,如果你真的想对从mongoose返回的数据做一些事情,你实际上应该在回调函数上做这件事。