- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对 javascript 很陌生,我对 mongoose 的“查找”范围有一些疑问。
我编写了下面的代码来尝试理解这个问题。
下面的代码搜索购物集合,然后搜索分配给该购物的商店。
storeMap是storeId => storeObject的hashmap,但是当Store.findOne作用域结束时,storeMap似乎回滚到一个空数组...
var storeMap = {};
Shopping.findOne({ name: shoppingName }, function(err, shopping){
shopping.stores.forEach(function(storeId) {
Store.findOne({_id: storeId}, function(err, store) {
if(err) console.log(err);
console.log(store); //prints out store data
storeMap[storeId] = store;
console.log(storeMap); //prints out store data
});
console.log(storeMap); //prints out an empty array
});
});
那么,为什么我的 storeMap 数组打印的是空数组而不是存储数组?
最佳答案
Store.findOne
与 Node.js 中的许多东西一样,是异步的并且采用 callback 。您的回调是设置 storeMap
的地方:
function(err, store) {
if(err) console.log(err);
console.log(store); //prints out store data
storeMap[storeId] = store;
console.log(storeMap); //prints out store data
}
这仅在 Store.findOne
完成其工作后运行,这可能需要很长时间。
但是,下面的行 console.log(storeMap);
会在回调运行之前立即执行。因此,storeMap 仍然是空的。
我建议查看 Node.js 中回调模式的一些示例/解释,这是理解的基础。
关于javascript - Mongoose findOne范围疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26125424/
我有以下变量: string str1 = "1"; string str2 = "asd"; string str3 = "3.5"; string str4 = "a"; 现在我需要找到每个字符串
这个问题在这里已经有了答案: Is Java "pass-by-reference" or "pass-by-value"? (92 个回答) 关闭 8 年前。 public class progr
我对这种行为有些疑惑。谁能解释一下 void Decrement(int* x){ *x--; //using this line, the output is 5
您好 StackOverflow 用户(或 Stackoverflowers?): 我正在通过编写 WPF 代码来学习。我阅读了几篇文章/看到了几个截屏视频,并且来自 WEB 开发背景,我启动了 VS
在阅读 HTML5 IndexedDB Specification 时我对它的异步请求模型有些怀疑。查看 request api example 时, open 方法用于启动异步请求。 var req
有几个问题,首先是这个方法,它将 int[] 转换为 byte[]: public static byte[] intToByte(int[] input){ ByteBuffer byteB
我是一名优秀的程序员,十分优秀!