本地代码:
let where={_id:projectlist[id]._id}
let data={
moban:projectlist[id].moban, //数组长度为1
}
wx.cloud.callFunction({
name: 'db', //云函数名称
data:{
dbname:"taizhang",
where:where,
data:data,
id:"update_where"
}
})
.then(res => {
})
-------------------------------------------------------------
云函数代码
const cloud = require('wx-server-sdk')
const db = cloud.database()
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
const dbname=event.dbname
const id=event.id
const doc=event.doc
const data=event.data
if(id=="update_where"){
try{
return new Promise((resolve, reject) => {
db.collection(dbname).where(event.where).update({data:data})
.then(res=>{
res.event=event
resolve(res)
})
.catch(err=>{
err.event=event
reject(err)
})
})
}
catch (error) {
return error
}
}
}
数据库的异常情况:
当本地moban这个数据长度为1,数据库原来的长度为2,更新后,会出现null
请帮忙解答一下,这个是因为数据库的原因还是代码的问题。以前更新时都是正常的,现在更新出现这样的异常。
你好,问题已定位到原因,近期会修复。
现在还会有这个问题吗,我最近发现我的数据中会莫名其妙多出一个null数据
同样问题!!@官方。日常常用api都有问题,还怎么让人入坑啊。
我也遇到类似问题,也是最近一段时间才出现的。我排查到可能是云函数的问题,或者是wx.cloud.callFunction的问题。你也可以尝试下,在云函数中打印出event.data看看,数组里已经存在null了。
我也发现了这样的问题,今天郁闷了一天,我认为是云环境的bug
手机上会出现,但是同样的代码用模拟器却不出现
update({data:{arr:_.set(newArr)})
试试_.set
都用这种方式可能会比较麻烦,多个数组就按设置多个。以前的方法没有发现错误,是最近才出现这种情况的。