如何在猫鼬获取后持久化数据
How to persist data after mongoose fetch?
我正在mongoDB上执行一个请求,我想为我在数据库中找到的每个对象增加一个变量。
我的问题是,我的变量totalSize似乎无法保存它获得的数据,我不知道为什么:/
我认为这是js中的闭包问题,但有人告诉我,看看是否不是查询对象的异步特性导致了我的问题。
我迷路了:/
var totalSize = 0;
for (var i = json[0].game.length - 1; i >= 0; i--) {
//When I found a game, I would like to increment his size in totalSize
Game.findOne({
'steamID': json[0].game[i].appID[0]
}, function (err, game) {
if (err) return handleError(err);
if (game) {
//everything is fine here totalSize is the right number
totalSize += game.size;
}
})// where he "forget" my var
//totalSize is still at 0 like I never incremented the variable
console.log(totalSize);
}
res.render('user', {
steamid: steamID,
steamid64: steamID64,
size: totalSize,
content: json
});
findOne是异步的,因此console.log在findOne完成之前执行
var totalSize = 0;
for (var i = json[0].game.length - 1; i >= 0; i--) {
//When I found a game, I would like to increment his size in totalSize
Game.findOne({
'steamID': json[0].game[i].appID[0]
}, function (err, game) {
if (err) return handleError(err);
if (game) {
//everything is fine here totalSize is the right number
totalSize += game.size;
}
console.log(totalSize);
})
}
这样做:
function findTotalSize(callback){
var totalSize = 0;
var gameLength = json[0].game.length;
for (var i = gameLength - 1; i >= 0; i--) {
Game.findOne({
'steamID': json[0].game[i].appID[0]
}, function (err, game) {
if (err) return handleError(err);
if (game) {
totalSize += game.size;
}
if(--gameLength == 0)
callback(totalSize);
})
}
}
//use it
findTotalSize(function(totalSize){
res.render('user', {
steamid: steamID,
steamid64: steamID64,
size: totalSize,
content: json
});
});
相关文章:
- 在post-expressjs之后持久化表单数据
- 如何使 Angular 服务中的数据通过页面刷新持久化
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 使用 JavaScript 将数据持久化在服务器上
- 如何在 react.js 中跨子组件持久化数据或状态
- 如何在javaScript:Jquery中保存/持久化和访问客户端的数据
- Ember Mirage 持久化数据
- 如何在angularjs中持久化表单字段数据
- 在AngularJS应用程序中本地持久化数组数据,以便在两个应用程序之间共享
- 我可以在浏览器之间通过Javascript持久化应用程序数据吗
- 在我的服务工厂中,我查找了一个大型数据集——我想持久化它,并检查它的存在,以避免再次调用它
- 如何在猫鼬获取后持久化数据
- 如何在angular JS中持久化数据和模型
- 如何使用Angular更新Kendo-UI网格上的数据并持久化层级选择?
- Google apps脚本:如何在不同的函数调用之间在电子表格中持久化数据
- 在knockoutJS中为observableArray在客户端持久化数据
- 跨多个控制器持久化数据
- 如何在卸载应用程序后在数据库中持久化数据
- 使用智能表在视图状态 AngularJs 之间持久化数据
- 在重新声明的变量中持久化数据