这个问题背后的场景是,我们想和外部数据库做一下同步,当我获取到外部数据之后,想直接一次性更新这些数据。
比如是否支持这样来更新数据
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
cloud.init({env: event.env});
let db = cloud.database({env: event.env});
const _ = db.command
return await db.collection('book').where({
name: _.in(['book30','book31'])
}).update([{data:[{name:"book30", sold:10},{name:"book31", sold:5}]});
}
从文档来看好像如果要更新多条数据的话,只能更新这些数据中的固定字段。但是同步的时候我这边无法确切知道会有哪些字段会更新。
希望云数据库能够支持类似外键的功能,可以在数据中设置这些外键,然后可以批量更新数据
比如: update({data:[{externalId:"key1",data:""},{externalId:"key2",data:""}]})
直接这样呢?1. 查询要更新的记录的 id。2. where({ _id: _.in(ids) }).update({ ... })
不行,只能在update里面设置对象
db.collection(event.collectionName).where({ _id: _.in(cloudIds), openId: wxContext.OPENID }).update({data:datas}).then(res=>{ console.log(res); }).catch(err => { console.log(err); })
返回如下错误:
Error: errCode: -1 unknown error | errMsg: parameter should be object instead of array;