我需要更新有限数量的结果,因为我有以下代码:
// `places` variable is a `.find` result
async.mapSeries(places, function(p, msCallback){
if(!p.stats){
p.stats = { 'impressions': 0 }
}
if(!p.stats.impressions){
p.stats.impressions = 0
}
// This is what I want to update
p.stats.impressions += 1
console.log(p.stats) // { views: 10, pulse: 30, impressions: 0 }
p.save(function(e){
// Never logged
if(e) log('[places][_in] No se ha actualizado la impresión', 'error')
// Always logged
console.log('Saved') // Saved
return msCallback()
})
}, function(err){
// Never logged
if(err) log('[places][_in] Error al actualizar impresión')
return sCallback(null, places)
})
注意:数据库中的每个位置都有stats.impressions
字段,其值为0
更新
还尝试使用forEach
places.forEach(function(p){
if(!p.stats){
p.stats = { 'impressions': 0 }
}
if(!p.stats.impressions){
p.stats.impressions = 0
}
p.stats.impressions += 1
log(p.stats)
p.save(function(e){
if(e) log('[places][_in] No se ha actualizado la impresión', 'error')
log('Guardado')
})
})
解决
模型中的字段不同(错过了结尾s
):
'stats': {
// Lots of stat fields
'impression': { type: Number, default: 0 }
答案 0 :(得分:0)
对于调试我会添加日志记录保存回调中保存的对象也记录错误e因为如果有错误我认为你想知道哪个错误。我也不确定你为什么不在实际项目上调用保存操作来保存像place.save()
save(function(e,val){
// Never logged
if(e) console.log(e)
// Log here your new saved Item
if(val)console.log(val)
// Always logged
console.log('Saved') // Saved
return msCallback()
})