一尘不染

如何组织使用续集的节点应用程序?

node.js

我正在寻找一个使用序列化ORM的示例nodejs应用程序。

我主要担心的是,如果由于require()依赖关系循环而导致模型之间具有复杂的关系,那么几乎不可能在单独的js文件中定义模型。也许人们在一个非常长的文件中定义了所有模型?

我主要对模型的定义和在整个应用程序中的使用感兴趣。我想验证一下我自己正在做的事情是“好的”做事方式。


阅读 168

收藏
2020-07-07

共1个答案

一尘不染

短篇小说

这种情况下的诀窍不是初始化文件中的模型 而只是提供初始化所需的信息,并让集中的模块负责模型的设置和实例化。

因此,步骤如下:

  • 有几个Model文件,其中包含有关模型的数据,例如字段,关系和选项。
  • 有一个单例模块,该模块可以加载所有这些文件并设置所有模型类和关系。
  • 在app.js文件中设置您的单例模块。
  • 获得从单模块模型类 使用require来自单上的模型文件,加载型号代替使用。

更长的故事

这是带有相应源代码的此解决方案的更详细描述:

http://jeydotc.github.io/blog/2012/10/30/EXPRESS-WITH-
SEQUELIZE.html

编辑:这是一个非常古老的答案!(请阅读以获取信息)

它在许多方面都古老而有限!

  • 首先 ,正如@jinglesthula在评论中提到的(我也经历过)-要求这些文件存在问题。这是因为requirereaddirSync!的工作方式不同!

  • 其次 -您的关系 非常 有限-该代码不提供这些关联的 选项 ,因此您 无法 创建belongsToMany它需要的through属性。您可以进行最基本的关联。

  • 第三 -您在模型关系方面非常有限!如果仔细阅读代码,您会发现关系是一个 Object 而不是 Array ,因此,如果要建立 多个 相同类型的关联(例如两次belongsTo),您将无法做到!

  • 第四 -您不需要那个单身的东西。nodejs中的每个模块本身都是单例的,因此所有这些使它毫无原因地变得非常复杂。

您应该看到Farm的答案!(本文的链接已断开,但我将使用sequelize中的此官方示例对其进行修复:https : //github.com/sequelize/express-
example/blob/master/models/index.js-您可以浏览整个项目以了解发生了什么)。

ps:我正在编辑这篇文章,因为它被推高了,人们甚至都看不到任何新答案(就像我一样)。

编辑: 只是将链接更改为同一文章的副本,但在Github页面中

2020-07-07