因为情况比较多,为了偷懒,我把查询语句分开写了。结果,虽然data能ok,但是res却不能再赋值了。。。。
请教大神,这是什么症状?
我不确定我哪里做错了什么,还望指教。
var res1 = await collection
.aggregate()
.match({
artSchool: artSchoolItem,
artGrade: dbCmd.in(artGradeItem),
artTag: dbCmd.in(artTagsItem),
})
var res2 = res1.limit(30)
.lookup({
from: 'user',
localField: 'artAuthorId',
foreignField: '_id',
as: 'artAuthorInfo',
})
.sort({
artPublishDate: -1,
})
.end()
res2.tt = 'hi';
console.log('进来了:'+ '这样res2有正确data值,但是res的tt属性赋值失败。');
return res2
2 个回复
9***@qq.com - 前端工程师
数据库操作是异步的,你第一次操作加了await,第二次没有加.res2=res1.limit那里没有加await,不会等待结果执行完,所以这里的赋值是在res2.tt='hi'之后执行的,把tt='hi'给覆盖了。
cecf (作者) - 前台转全栈
嗯,大有道理,应该是这样。。多谢7732兄。
您是专家吧?目光如炬,一针见血,可见功力深厚,令人心向往之啊。