node.js - 如何使用 Sequelize 填充树

标签 node.js sequelize.js

我想以高效且一致的方式填充目录。 (id 应该始终相同) 使用引用自身的模型来制作多树结构:

var Category = sequelize.define("Category", {
  name: DataTypes.STRING
}, {
  timestamps: false,
  classMethods: {
    associate: function(models) {
      Category.hasMany(models.Category, {
        as: 'Children',
        foreignKey: 'ParentId',
        useJunctionTable: false
      });
    }
  }
});

数据示例:

var categories = [
{ name: "Menu A", Children: [
  { name: "Sub 1"},
  { name: "Sub 2", Children: [
    { name: "Element 1" },
    { name: "Element 2" }
  ]},
]}
];

ATM 我可以创建所有类别,例如:

var process = function (node) {
  node.forEach(function (value, index, array) {
    models.Category.create(value);
    if(value.Children){
      process(value.Children);
    }
  });
  return node;
}

process(categories);

但我缺少模型关联。

最佳答案

我使用了模块https://github.com/domasx2/sequelize-fixtures实现与您类似的目标。

使用此模块,您可以使用固定 ID 和关联在数据库中加载数据:

[
    {
        "model": "Owner",
        "data": {
            "id": 11,
            "name": "John Doe",
            "city": "Vilnius"
        }
    },
    {
        "model": "Car",
        "data": {
            "id": 203,
            "make": "Ford",
            "owner": 11
        }
    }
]

希望这有帮助

关于node.js - 如何使用 Sequelize 填充树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952920/

相关文章:

javascript - sql select中的Nodejs子选择

node.js - Sequelize 连接和日志记录问题

node.js - vagrant、docker、共享卷在初始配置时未准备好

node.js - 为什么当我尝试创建数据时会引发此错误?

javascript - 从数据库获取后对转换列值进行序列化

javascript - 如何在 Socket.IO 的 JavaScript 中传递一个 "new"对象

node.js - 在 sequelize 中设置模型时使用列名的别名

javascript - Syncano 对多个字段进行条件过滤

javascript - PDF A4 页面中的网站内容不响应

node.js - 为开发环境分配一个域名到localhost