Node.js 使用mongo/node的多语言界面和内容

Node.js 使用mongo/node的多语言界面和内容,node.js,mongodb,schema,data-modeling,database,Node.js,Mongodb,Schema,Data Modeling,Database,我们正在开发一个新的应用程序,它将以saas模式在线提供服务。用户可以访问某些工具和一些关于如何使用它的教程 我的问题是什么是使(界面和内容)都成为多语言的最佳方法。给你一个例子-想象一下带有以下链接的简单导航: -第1节 |-第a页 |-第b页 -第2节 -第3节 |-c页 每一页显然都包含某些标签、标题、按钮等 我已经搜索了一段时间,找到的最接近的答案是: 然而,它描述了有关关系数据库的方法 在研究了其他问题之后,最好的方法似乎是将节/页/标签/标题/按钮的每个名称存储为一个ID为的对象,并

我们正在开发一个新的应用程序,它将以saas模式在线提供服务。用户可以访问某些工具和一些关于如何使用它的教程

我的问题是什么是使(界面和内容)都成为多语言的最佳方法。给你一个例子-想象一下带有以下链接的简单导航:

-第1节
|-第a页
|-第b页
-第2节
-第3节
|-c页

每一页显然都包含某些标签、标题、按钮等

我已经搜索了一段时间,找到的最接近的答案是: 然而,它描述了有关关系数据库的方法


在研究了其他问题之后,最好的方法似乎是将节/页/标签/标题/按钮的每个名称存储为一个ID为的对象,并将翻译保存在一个单独的表中,包括对象的相应ID、语言和内容。在SQL world中,simple join可以完成这项工作,但是由于我们使用的是Mongo,我想有更好的方法来完成这项工作

我建议将所有翻译存储在mongoDb数据库中,然后使用Express API从首页请求翻译

[FRONT] ----> [Send mongoDB _id(s)] ---> [EXPRESS API] ===> [MONGOOSE]

[FRONT] <---------- [Translations] <---- [EXPRESS API] <=== [MONGOOSE]

数据示例(MongoDB文档)
请求示例:检索关于一个随机部分的所有数据
工具

---->

---->

PS:是一个github项目,解释如何从头开始web/node项目(安装工具等)[Babel、Gulp、Webpack、ES6…]相关
       const Content = Schema({
                // Type of item you are dealing with
                contentType: {
                    type: String,
                    enum: ['link', 'title', 'section', 'page'],
                },

                // Value of translations
                translations: [{
                    languageName: String,
                    value: String,
                }],

                // All Contents that are inside
                childs: [{
                    type: Schema.Types.ObjectId,
                    ref: 'Content',
                }],
        });
       [{
             _id: '00000000000000000000001',
             contentType: 'section',
             translations: [{
                 languageName: 'French',
                 value: 'Section Enfant',
             }, {
                 languageName: 'English',
                 value: 'Child Section',
             }],
             dads: ['00000000000000000000002'],
        }, {
             _id: '00000000000000000000002',
             contentType: 'page',
             translations: [{
                 languageName: 'French',
                 value: 'Page Baguette',
             }, {
                 languageName: 'English',
                 value: 'Tee Page',
             }],
             childs: [],
       }]
   Content.find({
       contentType: 'section',
   })
   .then((ret) => {
       if (!ret) return [];

       // Here recursively get childs and childs and childs
       // until you got everything
   })
   .then(() => {})
   .catch(err => {});