当前位置:网站首页>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.以供参考.
边栏推荐
- What is a system?
- 关于出现大量close_wait状态的理解
- VS QT - ui does not display newly added members (controls) || code is silent
- addressable in Golang
- Thinking about data governance after Didi fines
- Port inspection steps - 7680 port analysis - Dosvc service
- The idea project obviously has dependencies, but the file is not displayed, Cannot resolve symbol 'XXX'
- MySQL模糊查询可以使用INSTR替代LIKE
- 安全20220712
- Redis uses LIST to cache the latest comments
猜你喜欢
随机推荐
(树) 最近公共祖先(LCA)
A brief introduction to the CheckBox component of the basic components of Flutter
浅识Flutter 基本组件之CheckboxListTile组件
C language confession code?
Can't load /home/Iot/.rnd into RNG
递归实现汉诺塔问题
open failed: EACCES (Permission denied)
(6) Enumeration and annotation
C语言表白代码?
Redis uses sorted set to cache latest comments
问题7:列表的拼接
VS QT - ui does not display newly added members (controls) || code is silent
Notes on the establishment of the company's official website (6): The public security record of the domain name is carried out and the record number is displayed at the bottom of the web page
type_traits metaprogramming library learning
qlib自动化quant
【SemiDrive源码分析】【MailBox核间通信】44 - 基于Mailbox IPCC RPC 实现核间通信(RTOS侧 IPCC_RPC Server 消息接收及回复 原理分析篇)
MATLAB/Simulink & & STM32CubeMX tool chain completes model-based design development (MBD) (three)
强化学习:从入门到入坑再到拉屎
Just debuted "Fight to Fame", safety and comfort are not lost
浅识Flutter 基本组件之CheckBox组件



![[C language] General method of base conversion](/img/28/954af5f47a79ff02d3cc0792ac8586.jpg)




