最终更新 我从使用基于以下来自 andresmijares 的答案的事务更改为使用 set()。
这现在允许我将数据写入数据库。
var gradeDocRef = db.collection("students").doc(studentId);
console.log(gradeDocRef);
var setWithMerge = gradeDocRef.set({
"UnitGrades": {
[unitNo]: {
"CG": CG,
"PG": PG,
"TG": TG
}
}
}, { merge: true });
Run Code Online (Sandbox Code Playgroud)
编辑 我根据下面来自 andresmijares 的评论更改了交易代码。
transaction.set(gradeDocRef, {merge: true}, {
但是然后得到这个错误?
传递给函数 Transaction.set() 的未知选项“UnitGrades”。可用选项:merge、mergeFields
我有一个包含学生集合的云 Firestore 数据库。每个学生集合都包含一个带有地图和子地图的学生文档,如下所示
UnitGrades:
{
IT1:
{
CG: "F"
PG: "F"
TG: "F"
id: "IT1"
name: "Fundamentals of IT"
type: "Exam"
}
Run Code Online (Sandbox Code Playgroud)
我在地图中有 10 个单位 UnitGrades 每个学生都有相同的单位组合
我想根据 bootstrap 中的 HTML 表单更新地图(表单正在工作,加上很长,所以不要把它放在这里)
即改变学生成绩
我使用了 firestore 事务更新文档,并稍作调整以从 …