如何在 Firestore 的父映射字段中添加新的映射字段?

How to add a new map field inside a parent map field in Firestore?

我想在另一个地图字段中添加一个新的地图字段。 我的数据结构如下所示:

我想在 'Filed 1' 中的 'field a' 之后添加一个 'field b' (请原谅我的错别字)。

我的代码是这样的

 const collsRef = doc(db, "collections", collectionUid); // get the right document
 await setDoc(collsRef, { sellectData }, { merge: true });

但这不仅给我一个错误,我相信这段代码只会添加一个与 'Filed 1'

相同级别的新字段

触发不支持字段值错误的数据类型是一个JS对象,我需要在提交到数据库之前解析它吗?

我删除了数据并保留了结构和语法,因为它包含个人敏感数据。我希望这足以说明问题。

非常感谢

我不确定 sellectData 结构是什么样的,但您必须构建一个与 Firestore 具有相同结构的对象。请参阅下面的示例代码:

const collsRef = doc(db, "collections", collectionUid);

let sellectData = {
  "field b": { "key b" : "value b" }
}

await setDoc(collsRef, { 
  "Filed 1": sellectData
}, { merge: true });

这将导致(已更正您的拼写错误):


更新:

您有两个选项可以将对象键设置为变量。

您需要先制作对象,然后使用[]设置它。:

let key = "Field 1";
let sellectData = {
  "field b": { "key b" : "value b" }
}

await setDoc(collsRef, {
  [key]: sellectData
}, { merge: true });

或者,通过构建对象本身。

let key = "Field 1";

let sellectData = {
  [key] : { "field b": 
    { "key b" : "value b" }
  }
}

// Remove the curly brackets `{}` in this case.
await setDoc(collsRef, 
  sellectData, 
  { merge: true });

有关详细信息,请参阅 Update fields in nested objects