Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js 管理数据库国际化的最佳方法_Node.js_Database_Internationalization_Sequelize.js - Fatal编程技术网

Node.js 管理数据库国际化的最佳方法

Node.js 管理数据库国际化的最佳方法,node.js,database,internationalization,sequelize.js,Node.js,Database,Internationalization,Sequelize.js,我在数据库中管理我的i18n时遇到了一些问题 目前,我的应用程序上只有两种语言可用,但为了便于扩展,我希望以“最佳”的方式进行 我本来可以复制所有的字段,比如description\u fr,description\u en,但我根本不能接受这一点。我现在所做的是一个外部表,称之为content,其架构如下: id_ref => entity referenced id (2) type => table name (university) field => field of

我在数据库中管理我的i18n时遇到了一些问题

目前,我的应用程序上只有两种语言可用,但为了便于扩展,我希望以“最佳”的方式进行

我本来可以复制所有的字段,比如
description\u fr,description\u en
,但我根本不能接受这一点。我现在所做的是一个外部表,称之为
content
,其架构如下:

id_ref => entity referenced id (2)
type => table name (university)
field => field of the specific table (description)
lang => which lang (fr, en, es…)
content => and finally the appropriate content. 
我认为精确是很重要的,我使用sequelizeJS作为ORM。所以我可以使用一个有用的钩子作为afterFind、afterCreate和afterUpdate。所以每次我想找到一个资源,例如,在找到它之后,我的钩子会检索这个资源的所有内容,并用goods值定义我的对象。这很有效,但我不喜欢这个

但我有一些问题:

  • 这大大增加了我对数据库的请求数量:例如,如果我选择50行,我必须再执行50个请求,只针对一个特定的模型。如果我有嵌套模型,它是指数型的

  • 然后,通过内容获取数据是很复杂的。查找具有特定名称的大学的示例很复杂

  • 还有很多更新工作等

因此,我想知道,将数据直接保存在相关表中作为JSON是否是一个好主意。差不多

{
    fr : { 'name':'Ma super université' },
    en : { 'name':'My kick ass university' }
}
继续使用Sequelize钩子来构建并将适当的数据插入到我的对象中

你觉得怎么样? 你是如何做到这一点的


编辑

  • 我使用mysql数据库

  • 它涉及大约20个字段(跨模型)

  • 如果没有内容集,我必须使用我的默认语言设置默认值(例如,如果没有内容集,法语的event.description将与英语的event.description相同)


我使用了这个npm包。使用sequelize 3.23.2对我来说效果很好,不幸的是它似乎还不支持sequelize 4.x。

我只是想知道为什么要在数据库中存储静态i18n数据?因为通常i18n数据在更改源时需要更改。