云函数的数据库语句拼装问题?
发布于 5 年前 作者 lei12 6542 次浏览 来自 官方Issues

为了构建一个比较灵活的数据数据库操作云函数,可以通过前端传过来的参数灵活拼装查询语句。

首先,已被注释的是现在可用的代码,但对于后续的扩展性还不够好,比如增加排序等参数。

我尝试用以下方法来拼装,打印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 回复

1、含有command的where不能从前端传入。

2、你参数写死调试呗。

回到顶部