Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在firestore中存储二叉树节点_Javascript_Reactjs_Firebase_Google Cloud Firestore_Binary Tree - Fatal编程技术网

Javascript 如何在firestore中存储二叉树节点

Javascript 如何在firestore中存储二叉树节点,javascript,reactjs,firebase,google-cloud-firestore,binary-tree,Javascript,Reactjs,Firebase,Google Cloud Firestore,Binary Tree,我想在react中创建一个二叉树。我正在使用react-d3-tree组件来显示树。 对于react-d3-tree,数据的格式应为 const myTreeData = [ { name: 'Top Level', attributes: { keyA: 'val A', keyB: 'val B', keyC: 'val C', }, children: [ { name: 'Level 2:

我想在react中创建一个二叉树。我正在使用react-d3-tree组件来显示树。 对于react-d3-tree,数据的格式应为

const myTreeData = [
  {
    name: 'Top Level',
    attributes: {
      keyA: 'val A',
      keyB: 'val B',
      keyC: 'val C',
    },
    children: [
      {
        name: 'Level 2: A',
        attributes: {
          keyA: 'val A',
          keyB: 'val B',
          keyC: 'val C',
        },
      },
      {
        name: 'Level 2: B',
      },
    ],
  },
];

如何在firestore上存储数据,以便检索数据并以上述数组格式获取数据?

您只需传递封装在对象中的myTreeData变量,如下所示:

const db = firebase.firestore();

const myTreeData = [
  {
    name: 'Top Level',
    attributes: {
      keyA: 'val A',
      keyB: 'val B',
      keyC: 'val C',
    },
    children: [
      {
        name: 'Level 2: A',
        attributes: {
          keyA: 'val A',
          keyB: 'val B',
          keyC: 'val C',
        },
      },
      {
        name: 'Level 2: B',
      },
    ],
  },
];

db.collection('yourCollection').add({tree: myTreeData})
.then(function(newDocRef) {
    return newDocRef.get();
}).then(function(doc) {
    console.log("JavaScript Object:", doc.data().tree);
    console.log("JSON:", JSON.stringify(doc.data().tree));
}).catch(function(error) {
    console.log("Error getting document:", error);
});

上面的代码保存了{tree:myTreeData}对象,并返回此文档,以便将控制台中树字段的值作为JavaScript对象和JSON记录下来。我想分别添加每个节点。然后将所有节点检索到上述数组格式。我想要的是Firestore中的数据模式来存储每个节点。您可以详细说明您的意思分别由每个节点执行?哪些节点?仅名称、属性、子项或keyA、keyB等。。。请尽可能详细地更新您的问题,说明您的确切目标,特别是如何及时组织不同的写入操作?这是一个由节点组成的二叉树。每个节点都由名称和属性字段组成。子节点是二叉树中每个节点的左节点和右节点,但没有太多的细节很难帮助你需要更多。如果要使用新数组元素和/或新节点更新字段,则应混合使用对和的调用,具体取决于确切的更新。请注意,在保存新值之前,可能需要读取树字段的值以更新其在前端中的值,例如,如果要更新数组元素中包含的对象。同样,如果没有更多的细节,就很难提供更多的指导。