cecf
cecf
  • 发布:2020-04-20 07:42
  • 更新:2020-04-20 10:35
  • 阅读:1070

为什么查询分开写,res有data,但属性赋值会失败呢?

分类:uniCloud

因为情况比较多,为了偷懒,我把查询语句分开写了。结果,虽然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
2020-04-20 07:42 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com - 前端工程师

数据库操作是异步的,你第一次操作加了await,第二次没有加.res2=res1.limit那里没有加await,不会等待结果执行完,所以这里的赋值是在res2.tt='hi'之后执行的,把tt='hi'给覆盖了。

cecf

cecf (作者) - 前台转全栈

嗯,大有道理,应该是这样。。多谢7732兄。

您是专家吧?目光如炬,一针见血,可见功力深厚,令人心向往之啊。

该问题目前已经被锁定, 无法添加新回复