我想要在云函数里面做一些逻辑判断,但是始终获取不到Collection.get()中的值
想要在添加一条数据之前先判断数据库中是否存在,不存在则新增
但是在if那个位置一直不知道怎么去判断
cool是中间变量
我尝试着把cool stringify,但是出来的东西是空的 但是return到小程序那边又有值在里面
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
var cool = null
try {
console.log('openid:' + event._openid)
cool = db.collection('user_info').where({
_openid:event._openid
}).get({
success: function (res) {
return res
}
});
} catch (e) {
console.error(e);
}
if (cool.data._openid==undefined){
db.collection('user_info').add({
// data 字段表示需新增的 JSON 数据
data: {
_openid: wxContext.OPENID,
}
})
console.log("没有找到openid,新增成功")
cool = db.collection('user_info').where({
_openid: event._openid
}).get({
success: function (res) {
return res
}
});
}
console.log("cool2str:" + JSON.stringify(cool));
return cool
}
cool = await db.collection('user_info').where({ _openid:event._openid }).get(); 这样子写cool就能获取到了,数据库操作是异步的, 还有要判断一个值是否存在,可以在where查询的时候,使用下面这个查询条件 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.exists.html
你这写法也太混乱了...
是异步的问题吧,改成同步的。
云函数里凡是看不到await,只有success的,都会有问题。
collection.get() 的返回值是在 success 的回调函数中的:
db.collection('user_info').where({ _openid:event._openid }).get({ success: function (res) { // res 中包含 get() 获取的数据 return res } });
有人吗