收藏
回答

小程序通过云函数更新数据库,为什么一个JSON对象只能更新第一条

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 客户端 wxfd8dc3f04b481448 2

- 当前 Bug 的表现(可附上截图)

张三

- 预期表现

张三

    "lastName": "Doe"


- 复现路径


- 提供一个最简复现 Demo


最后一次编辑于  2018-09-22
回答关注问题邀请回答
收藏

2 个回答

  • 老吴
    老吴
    2018-09-23

    刚刚试了下小程序端的api可以成功更新两个键值,为什么服务器端api不行?难道是bug?待解答,谢谢

    2018-09-23
    赞同
    回复
  • 张吉(jimmyjzhang)
    张吉(jimmyjzhang)
    2018-09-23

    用doc选定了一条文档,是只能更新一条记录的。

    更新多条记录可以用where...update

    2018-09-23
    赞同
    回复 3
    • 老吴
      老吴
      2018-09-23

      你好,可能我没有表达清楚意思。

      我是想更新一条json记录中的某一个键值(例如:review),update的data中传入的view值也是一个json对象,例如:

      data: {

                "review": {

                  "name": "张三",

                  "age": "23"

                  }

              },

      为什么更新完毕后,review只成功更新了一组键值

      "review":{"name":"张三"}

      键值age没有更新,试了很多次都不行。

       

      另外:云函数上传成功后,如果立即执行,经常会失败,或者还是原来的内容,感觉云端滞后很严重。

      2018-09-23
      回复
    • 张吉(jimmyjzhang)
      张吉(jimmyjzhang)
      2018-09-23回复老吴

      数据更新这个,字段的类型都是什么呢,用类似的实例没有重现。云函数重新上传部署是需要一点时间,如果等待很久还是没有更新,或者有报错,麻烦贴一下具体信息看看

      2018-09-23
      回复
    • 老吴
      老吴
      2018-09-25回复张吉(jimmyjzhang)

      贴上代码,请指教,谢谢!

       

      1、云函数updateTest代码:

      // 云函数入口文件

      const cloud = require('wx-server-sdk')

      cloud.init()

      const db = cloud.database()

      // 云函数入口函数

      exports.main = async(event, context) => {

        try {

          return await db.collection('test').where({

              _id: event.id

            })

            .update({

              data: {

                "name": {

                  "firstName": "John",

                  "lastName": "Doe"

                }

              },

            }).then(res => {

              console.log(res)

            })

        } catch (e) {

          console.error(e)

        }

      }

      ==================================================================================

      2、客户端index.wsml

      <button bindtap='updateTest'>updateTest</button>

       

      3、客户端index.js

      updateTest(){

        wx.cloud.callFunction({

          name: 'updateTest',

          data: {

            "id": "0001",

          }

        }).then(res => {

          // console.log(res)

        }).catch(err => {

          // handle error

        })

      }

       

      ======================================================================================

      云数据库test

      修改前:

      0001

      24

       

      修改后:

      0001

      24

      {"firstName":"John"}


      2018-09-25
      回复