const queryList = event.queryList; reslist = await col.where({ _id: _.in(queryList)}) .limit(event.limit) .get() //ps = res.data const list = reslist.data const order = event.queryList list.sort((a, b) => { const indexA = order.indexOf(a._id); const indexB = order.indexOf(b._id); return indexA - indexB; }); console.log(list); ps = list const queryList = event.queryList; const query = _.or(queryList.map(field => ({[field]: _.exists(true)}))); reslist = await col.where(query) .limit(event.limit) .get(); const list = reslist.data const order = event.queryList list.sort((a, b) => { const indexA = order.indexOf(a._id); const indexB = order.indexOf(b._id); return indexA - indexB; }); console.log(list); ps = list以上两段代码使用那个更好,更能减少对云数据库的调用次数,相应减少服务器费用
时间: 2023-07-15 13:11:12 浏览: 72
第二段代码更好,因为它使用了 `_.or` 来查询多个字段,减少了对云数据库的调用次数。第一段代码是先根据 `_id` 查询,然后再按照 `queryList` 的顺序进行排序,但是这样会导致如果 `queryList` 中的某些 `_id` 在数据库中不存在,那么查询结果就会出现问题。而第二段代码则是直接查询多个字段,避免了这个问题。
相关问题
const queryList = event.queryList; reslist = await col.where({ _id: _.in(queryList)}) .limit(event.limit) .get() //ps = res.data const list = reslist.data const order = event.queryList list.sort((a, b) => { const indexA = order.indexOf(a._id); const indexB = order.indexOf(b._id); return indexA - indexB; }); console.log(list); ps = list这段代码和下面这段代码有什么区别 const queryList = event.queryList; const query = _.or(queryList.map(field => ({[field]: _.exists(true)}))); reslist = await col.where(query) .limit(event.limit) .get(); const list = reslist.data const order = event.queryList list.sort((a, b) => { const indexA = order.indexOf(a._id); const indexB = order.indexOf(b._id); return indexA - indexB; }); console.log(list); ps = list
这两段代码的作用是相同的,都是根据查询条件获取指定数据并按照给定的顺序进行排序。其中第一段代码使用了`_.in()`方法来进行查询,而第二段代码使用了`_.or()`方法来进行查询。区别在于第一段代码直接将查询条件作为`where`方法的参数,而第二段代码先将查询条件拼接成一个`_.or()`方法的参数,再将其传递给`where`方法。另外,第二段代码中查询条件的写法更加灵活,可以根据实际情况进行调整。最终结果都被赋值给了变量`ps`。
const queryList = event.queryList; let reslist = await db.collection('products').where({ _id: _.in(queryList)}) .lookup({ // 连接查询 from: 'usersproducts', localField: '_id', foreignField: 'products_id', as: 'data' }) .limit(event.limit) .get()这段代码存在哪些问题
这段代码存在以下问题:
1. `event.queryList` 和 `event.limit` 变量的来源没有给出,无法确定其是否合法。
2. `await db.collection('products')` 中的 `db` 对象的来源没有给出,无法确定其是否合法。
3. `_.in(queryList)` 中的 `_` 变量的来源没有给出,无法确定其是否合法。
4. `lookup()` 方法中的参数设置不完整,缺少 `from` 字段的值。
5. `lookup()` 方法中的 `as` 字段命名不规范,建议使用描述性更强的名称。
6. 没有对查询结果进行错误处理,如果出现错误会导致程序崩溃。
建议对以上问题进行修复和改进。
阅读全文