收藏
回答

微信小程序数据库联表查询lookup遇到的问题?

1.需求:数据库里两个集合entryLog和userList,两个集合都有cardNo字段,想把两个集合中cardNo相同的记录关联并输出到小程序端

2.问题,在云函数里看到记录关联了,但在小程序端返回值为空

3.数据集合如下:

enrtyLog:

{

cardNo:""

isNew:true

...

}

userList:

{

cardNo:""

nickName:""

...

}

4.代码如下:

云函数 getGuest:

// 云函数入口文件

const cloud = require('xxx')

cloud.init()

const db = cloud.database()

// 云函数入口函数

exports.main = async (event, context) => {

  var $ = db.command.aggregate

  const _ = db.command

  db.collection('entryLog').aggregate()

  .lookup({

    from: 'userList',

    localField: 'cardNo',

    foreignField: 'cardNo',

    as: 'cardInfo',

  }).match({

    isNew: true

  })

  .end()

  .then(

    res =>{

      console.log("getGuest successfully,",res)

      result(res)

    } 

  )

  .catch(err => console.error(err))

}

小程序端

todayGuest: function() {

    wx.cloud.callFunction({

      name: 'getGuest',

      complete: res => {

        console.log('getGuest successfully : ',res)

      }

    })

  },

运行后,云函数的日志如下,看起来是运行正常的:

getGuest successfully, {

"list": [

{

"cardNo": "W071701",

"date": "2021-07-21",

"isNew": true,

。。。

"cardInfo": [

{

"nickName": "xxx",

"cardNo": "W071701",

。。。

}

]

},

但在小程序端却没有返回值:

getGuest successfully : 

{errMsg: "cloud.callFunction:ok", result: null, requestID: "xxx"}

5.另外,还有个问题,在云函数里用了project,想从userList中只取部分字段,但下面的代码没用:

.project({

    cardNo:1,

    nickName:1,

    })


回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    发表于移动端
    2021-07-21
    你没有return啊
    2021-07-21
    有用 1
    回复 5
    • 深圳夜奔
      深圳夜奔
      2021-07-22
      有return,开始result(res)那句就是return(res),也没有返回值
      2021-07-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-22回复深圳夜奔
      有是有,没写对,不就跟没有一样吗
      2021-07-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-22回复深圳夜奔
      return await db.collection('entryLog').aggregate()
      2021-07-22
      回复
    • 深圳夜奔
      深圳夜奔
      2021-07-22
      哦,原来是这里错了,感谢感谢
      2021-07-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-07-22回复深圳夜奔
      问题的本质跟云开发 和 lookup没关系,还是js底子差
      2021-07-22
      回复
登录 后发表内容