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,
})