首页 文章

嵌套(嵌入)树模型在环回与mongodb

提问于
浏览
3

我试图找出如何使用mongodb在环回中设置一个非常简单的嵌套“treenode”模型 . 这个想法是只有一个模型(为此):treenode可以包含其他treenode . 我想通过mongodb嵌套文档立即存储它们:

- TreeNode (document):
  Name: "A",
  Nodes: [          
     { 
       Name: "A-A",
       Nodes: [
          { 
            Name: "A-A-A",
            Nodes: []
          },
          { 
            Name: "A-A-B",
            Nodes: []
          },
          { 
            Name: "A-A-C",
            Nodes: []
          }         
      },       
      { 
       Name: "A-B",
       Nodes: []       
      },  
  ]

此外,每个节点在任何级别 has relations 到其他模型 .

将有许多顶级根节点(文档) . 哪种关系类型以及我应该如何使用?

2 回答

  • 1

    不幸的是,关于这个主题的文档还不多 . 现在,请参阅http://docs.strongloop.com/display/LB/Embedded+models+and+relations

  • 0

    您应该单独定义嵌套模型,然后将它们声明为瞬态模型 . 然后loopback应该将它们存储在其父模型中,如http://loopback.io/doc/en/lb2/Embedded-models-and-relations.html#transient-versus-persistent-for-the-embedded-model所述

    定义瞬态数据源

    server/datasources.json

    {
      ...
      "transient": {
        "name": "transient",
        "connector": "transient"
      }
    }
    

    server/model-config.json

    {
      ...
      "BaseNode": {
        "dataSource": "db",
        "public": true
      },
      "NestedNode": {
        "dataSource": "transient",
        "public": false
      }
    }
    

    模型定义应该是这样的:

    common/models/NestedNode.json

    {
      "name": "NestedNode",
      "base": "Model",
      "properties": {
          "name": {
              "type": "string"
          }
      },
      "relations": {
        "nodes": {
          "type": "referencesMany",
          "model": "NestedNode",
          "options": {
            "validate": true,
            "forceId": false
          }
        }
    }
    

    common/models/BaseNode.json

    {
      "name": "BaseNode",
      "base": "PersistedModel",
      "properties": {
         "name": {
            "type": "string"
         }
      },
      ...
      "relations": {
        "nestedNode": {
          "type": "embedsMany",
          "model": "Link",
          "scope": {
            "include": "linked"
          }
        }
      },
      ...
    }
    

    您也可能会遇到曲目参考问题 .

相关问题