我面临着Firestore的嵌套Map和点符号的问题。我在Firestore上有一个嵌套的Map,我试图使用点标记法在另一个对象中更新一个对象。然而,当使用点表示法时,它似乎将调用的键与Firestore中的对象名称连接起来,这不是所希望的行为。
下面是出现问题的代码片段:
if (doc && doc.exists) {
await doc.ref.update({subscription: {chartslab: {
"options.expiration": new Date(new Date().getTime()+(10*24*60*60*1000)),
"options.updatedAt": new Date().toISOString(),
}}}).then(() => {
return res.status(200).send("Document successfully updated!");
});
} else {
await doc.ref.set({subscription: {chartslab: {options: {
expiration: new Date(new Date().getTime()+(5*24*60*60*1000)),
}}}});
return res.status(200).send("Done");
}
字符串
在这段代码中,当我尝试使用点表示法更新嵌套的map(对象)时,它将键名“options.expiration”和“options.updatedAt”与Firerestore中的对象名连接起来。
但是,如果我更新嵌套Map而不使用点标记法,它会覆盖整个Map字段,这不是所希望的结果。
创建截图
x1c 0d1x的数据
更新截图
的
如何正确地使用点表示法来更新Firerestore中的特定嵌套对象,而不会出现这种连接问题?任何实现这一点的见解或替代方法将不胜感激。在此先谢谢您!
1条答案
按热度按时间wztqucjr1#
如果使用点表示法更新嵌套字段,则必须添加点表示法中的完整路径,如下所示:
字符串
如果您有很多嵌套字段需要更新,那么有一个包flat在这种情况下非常有用。
型
由于您正在更新整个'options'对象,您可以尝试以下操作:
型