JS链式的问题
各位大佬,javascript这种语法叫什么名堂,链式赋值?链式调用?如果有些值是需要用IF按需加上的,有没有办法分开写?
比如有时我根本不需要skip,有时不需要orderBy等等。
let get = await db.collection('satff').where({rogin: '茂名'}).skip(0).limit(100).orderBy('name', 'asc').get()
我尝试了以下两种方法都不行,必须一次性连起来写条件才能生效。
let GET = db.collection(collection)
if (doc) {
GET.doc(doc)
} else if (where) {
GET.where(where)
}
return GET.get()
let GET = db.collection(collection)
if (doc) {
GET.doc=doc
} else if (where) {
GET.where=where
}
return GET.get()
不知道各位大佬有没有什么解决办法。谢谢额 本帖最后由 SScrew 于 2021-10-1 15:51 编辑
可以链式是因为方法返回了对象自身,尝试下方代码
let GET = db.collection(collection)
if (doc) GET = GET.doc(doc)
if (where) GET = GET.where(where)
return GET.get() 已解决,谢谢 @SScrew
// 查询
async function get(event) {
// 获得数据
const {
collection,
doc,
where,
fields,
skip,
limit,
orderBy
} = event
// 声明语句
let get = db.collection(collection)
let total = 1
// 判断doc还是where
if (doc) {
get = get.doc(doc)
} else {
get = get.where(where)
// 查询数据总量(用于前端分页)
const countResult = await get.count()
total = countResult.total
// 跳跃
if (skip) get = get.skip(skip * limit)
// 数量
get.skip(limit || 100)
}
// 字段
if (fields) get = get.field(fields)
// 排序
if (orderBy) {
orderBy.forEach(element => {
get = get.orderBy(element, element)
});
}
res = await get.get()
return {
res,
total
}
} 鬼才逻辑
页:
[1]