为了构建一个比较灵活的数据数据库操作云函数,可以通过前端传过来的参数灵活拼装查询语句。
首先,已被注释的是现在可用的代码,但对于后续的扩展性还不够好,比如增加排序等参数。
我尝试用以下方法来拼装,打印GET可以看到doc、field等条件已经设置了。
但返回get结果时,发现条件无效,返回的是数据库全部的数据。
不知道什么原因?各位大佬是否有解决办法,谢谢。
// 查询
async function get(event) {
// 获得数据
const {
collection,
doc,
where,
fields
} = event || null
// // 查询并返回(已测试此代码没有问题)
// if (doc) {
// const GET = await db.collection(collection).doc(doc).field(fields ? fields : {}).get()
// return GET
// } else {
// const GET = await db.collection(collection).where(where).field(fields ? fields : {}).get()
// return GET
// }
// 声明查询(尝试用拼装方式)
let GET = db.collection(collection)
// 查询条件是doc或where
doc ? GET.doc = doc : GET.where = where
// 是否指定返回字段
fields ? GET.field = fields : null
// 开始查询
GET = await GET.get()
// 返回
return GET
}
1、含有command的where不能从前端传入。
2、你参数写死调试呗。
第二点“你参数写死调试呗。”我不了解你的意思,可否具体点。
谢谢