Node.js 管理数据库国际化的最佳方法
我在数据库中管理我的i18n时遇到了一些问题 目前,我的应用程序上只有两种语言可用,但为了便于扩展,我希望以“最佳”的方式进行 我本来可以复制所有的字段,比如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
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个请求,只针对一个特定的模型。如果我有嵌套模型,它是指数型的
- 然后,通过内容获取数据是很复杂的。查找具有特定名称的大学的示例很复杂
- 还有很多更新工作等
{
fr : { 'name':'Ma super université' },
en : { 'name':'My kick ass university' }
}
继续使用Sequelize钩子来构建并将适当的数据插入到我的对象中
你觉得怎么样?
你是如何做到这一点的
编辑
- 我使用mysql数据库
- 它涉及大约20个字段(跨模型)
- 如果没有内容集,我必须使用我的默认语言设置默认值(例如,如果没有内容集,法语的event.description将与英语的event.description相同)