收藏
回答

db.collection().where()查询语句不能用变量?

各位有没有遇到过查询语句不能用变量代替的情况?

我想把数据库相关的代码封装起来,方便之后调用。

数据库有一条记录,但调用后查询结果却是0(无记录)。不知道为什么,如果不使用外部js,而是直接写在页面里就没问题。全程无报错,这是咋回事呢?


function loadQuery(collection, key, value, callback) {

  const db = wx.cloud.database()

  db.collection(collection).where({
    key: value
  }).get({
    success: res => {
      if (res.data.length == 1){
        typeof callback == "function" && callback(res.data[0])
        console.log('js/db.js 数据库查询成功, length: ', res.data.length)
      }else if(res.data.length == 0) {
        typeof callback == "function" && callback(res.data[0])
        console.log('js/db.js 无数据, length: ', res.data.length)
      }else{
        console.log('js/db.js 数据库异常, length: ', res.data.length)
      }
    },
    fail: res => {
      //...
    },
    complete: res => {
      //...
    }
  })
}
module.exports.loadQuery = loadQuery;


最后一次编辑于  2019-10-30
回答关注问题邀请回答
收藏

1 个回答

  • move
    move
    2019-10-30

    直接传入一个对象就行了。

    let filter = {filter:"xxx"};

    function getData(filter){

    const db = wx.cloud.database()

      db.collection(collection).where(filter).get({......})

    }



    2019-10-30
    赞同
    回复 2
    • z.song
      z.song
      2019-10-30
      传入对象也不行,有没有办法能查到传进去的查询语句是什么?
      2019-10-30
      回复
    • z.song
      z.song
      2019-10-30
      刚刚没看仔细,抱歉,你的是对的,多谢啊!
      2019-10-30
      回复
登录 后发表内容
问题标签