收藏
回答

云数据库更新的时候是否可以一次更新多条数据,每条数据更新的字段不固定?

这个问题背后的场景是,我们想和外部数据库做一下同步,当我获取到外部数据之后,想直接一次性更新这些数据。

比如是否支持这样来更新数据

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:""}]})




最后一次编辑于  11-03
回答关注问题邀请回答
收藏

2 个回答

  • 邓坤力
    邓坤力
    11-03

    直接这样呢?1. 查询要更新的记录的 id。2. where({ _id: _.in(ids) }).update({ ... })

    11-03
    有用
    回复
  • Joe
    Joe
    11-04

    不行,只能在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;
    


    11-04
    有用
    回复
登录 后发表内容
问题标签