当前位置:网站首页>WeChat applet uses cloud functions to update and add cloud database nested array elements
WeChat applet uses cloud functions to update and add cloud database nested array elements
2022-07-31 04:13:00 【CicadaMay】
需求
1. 更新 Update
Now there was a cloud databaseJson嵌套数组对象,request to update it list 中的 checked 字段值.数据如下:
{
"book_id": "7-4",
"book_words": [{
"list": [{
"checked": false,
"eg": "Mrs. Rachel Lynde lived on the main road in Avonlea.",
"meaning": "主要道路,⼤路",
"word": "main road"
}, {
"checked": false,
"eg": "At half -past three, Matthew Cuthbert was driving his buggy down the road.",
"meaning": "30分",
"word": "half"
}],
"title": "Anne of Green Gables 1_Mrs. Lynde Is Surprised",
"unit_id": 1
},
{
"list": [{
"checked": false,
"eg": "She saw the odd girl in the ugly dress.",
"meaning": "奇怪的,奇特的",
"word": "odd"
}, {
"checked": false,
"eg": "She saw the odd girl in the ugly dress, with long red braid s and big eyes.",
"meaning": "发辫,辫⼦",
"word": "braid"
}],
"title": "Anne of Green Gables 1_Mrs. Lynde Is Surprised",
"unit_id": 2
}
]
}
.
更新有 set 和 update 两种命令,set 一般和 doc Cooperate with query primary key and update,不能和where 配合,update 可以和 doc / where 配合.
Due to the abovejson对象里,无法通过doc Get a specific field in it,所以我们用 where 和 update to check for updates.
for (let i = 0; i < newwords.length; i++) {
// forUpdate a single piece of data in a loop
await db.collection('book_words')
.where({
book_id: event.book_id,
"book_words.unit_id": event.unit_id,
"book_words.list.word": event.newwords[i].word
})
.update({
data: {
['book_words.'+(event.unit_id-1)+'.list.'+(event.newwords[i].index)+'.checked']: true
}
})
.then((res) => {
console.log("update book_words result", res)
})
.catch(err => {
console.error(err)
})
}
解释:
a. where
"book_words.unit_id" :match elements in an array,文档:查询、更新数组/嵌套对象
也可以用 elemMatch 来查询元素:
文档:Command.elemMatch
const db = cloud.database();
const _ = db.command; // command命令
//......function
.where({
book_id: event.book_id,
book_words:_.elemMatch({
unit_id: event.unit_id,
list:_.elemMatch({
word: event.newwords[i].word
})
})
})
b. update
[文档:查询、更新数组/嵌套对象]
(https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/query-array-object.html)
. ['book_words.'+(event.unit_id-1)+'.list.'+(event.newwords[i].index)+'.checked'] :
相当于:book_words.0.list.0.checked -> book_words[0].list[0].checked.+number = find arraynumber项元素,
更新checked值.
.
2. 添加,Update if any,没有则添加
add array to database,有则更新,无则添加,需要用到 set 命令,update : 更新一条记录;set : 更新替换一条记录.
文档:更新记录
文档:增删查改SDK-更新
// doc 会自动将 word 设为主键ID ,When inserted, it will be based on 主键word 判断是更新还是新增;
// 同样在forBatch single addition in loop
for (let i = 0; i < newwords.length; i++) {
await db.collection('new_words').doc(event.newwords[i].word).set({
data: event.newwords[i]
}).then((res) => {
console.log("new_words update result", res)
})
.catch(err => {
console.error("new_words", err)
});
}
The official documentation of the WeChat applet is too confusing,A hammer in the east A hammer in the west,Artificially making simple things more difficult,So write this blog to record.以供参考.
边栏推荐
- C primer plus study notes - 8, structure
- (5) final, abstract class, interface, inner class
- Recursive implementation of the Tower of Hanoi problem
- (五)final、抽象类、接口、内部类
- VS QT - ui does not display newly added members (controls) || code is silent
- $attrs/$listeners
- 强化学习:从入门到入坑再到拉屎
- Exsl file preview, word file preview web page method
- The third is the code to achieve
- 安全20220709
猜你喜欢

The BP neural network
![[Swift]自定义点击APP图标弹出的快捷方式](/img/d4/84b237995fc3d3700916eb57f6670d.png)
[Swift]自定义点击APP图标弹出的快捷方式
![Summary of Huawei Distributed Storage FusionStorage Knowledge Points [Interview]](/img/83/e0163b324448c6ef5b106862673637.jpg)
Summary of Huawei Distributed Storage FusionStorage Knowledge Points [Interview]

A brief introduction to the CheckboxListTile component of the basic components of Flutter

Detailed explanation of TCP and UDP

端口排查步骤-7680端口分析-Dosvc服务

MySQL基础操作

The application and practice of mid-to-platform brand advertising platform

Learning DAVID Database (1)

BUG消灭者!!实用调试技巧超全整理
随机推荐
Can't load /home/Iot/.rnd into RNG
【C语言进阶】文件操作(一)
[C language] General method for finding the sum of the greatest common factor and the least common multiple of two integers m and n, the classical solution
el-image tag doesn't work after binding click event
安全20220715
C语言表白代码?
强化学习:从入门到入坑再到拉屎
进程间通信
关于出现大量close_wait状态的理解
Redis 统计用户新增和留存
MySQL based operations
postgresql 15源码浅析(5)—— pg_control
Win10 CUDA CUDNN 安装配置(torch paddlepaddle)
Redis 使用LIST做最新评论缓存
(tree) Last Common Ancestor (LCA)
beforeDestroy与destroyed的使用
$parent/$children and ref
(6) Enumeration and annotation
已解决(最新版selenium框架元素定位报错)NameError: name ‘By‘ is not defined
(Line segment tree) Summary of common problems of basic line segment tree