当前位置:网站首页>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.以供参考.
边栏推荐
- Daily practice of LeetCode - palindrome structure of OR36 linked list
- (六)枚举、注解
- addressable in Golang
- 从滴滴罚款后数据治理思考
- 浅识Flutter 基本组件之CheckBox组件
- BUG destroyer!!Practical debugging skills are super comprehensive
- SQL Interview Questions (Key Points)
- "A daily practice, happy water problem" 1331. Array serial number conversion
- Recursive implementation of the Tower of Hanoi problem
- mysql基础知识(二)
猜你喜欢
Just debuted "Fight to Fame", safety and comfort are not lost
A brief introduction to the showDatePicker method of the basic components of Flutter
微信小程序使用云函数更新和添加云数据库嵌套数组元素
"DeepJIT: An End-To-End Deep Learning Framework for Just-In-Time Defect Prediction" paper notes
Zotero如何删除自动生成的标签
两个地址池r2负责管地址池r1负责管dhcp中继
Thinking about data governance after Didi fines
mysql基础知识(二)
[Swift]自定义点击APP图标弹出的快捷方式
LocalDate addition and subtraction operations and comparison size
随机推荐
endian mode
interprocess communication
(树) 最近公共祖先(LCA)
VScode+ESP32快速安装ESP-IDF插件
扫雷游戏(c语言写)
Component pass value provide/inject
The idea project obviously has dependencies, but the file is not displayed, Cannot resolve symbol 'XXX'
日志级别 和 打印log注意
$parent/$children and ref
(5) final, abstract class, interface, inner class
【AUTOSAR-RTE】-5-Explicit(显式)和Implicit(隐式) Sender-Receiver communication
C# 实现PLC的定时器
【小土堆补充】Pytorch学习笔记_Anaconda虚拟环境使用
ENSP,划分VLAN、静态路由,三层交换机综合配置
三子棋的代码实现
What is a system?
three.js 制作3D相册
(tree) Last Common Ancestor (LCA)
Why don't you programmers make a living off your own projects?And have to work for someone else?
beforeDestroy与destroyed的使用