我需要 mysql 查询中每一行的第一个字段作为属性名称,第二个字段作为值

问题描述

我正在使用 node.js 建立一个站点。我希望用户能够在英语和日语(未来可能还有更多语言)之间进行选择。我有一个名为“语言”的表,看起来像这样。

+------------+-------------+-------------+
|  variable  |      en     |     jp      |
+============+=============+=============+
| 'username' | 'User Name' | 'ユーザ名'   |
+------------+-------------+-------------|
| 'password' | 'Password'  | 'パスワード' |
+------------+-------------+-------------+

我可以使用 MysqL2/promise 模块很好地查询数据库...

const lang = 'jp';    
const [rows,schema] = await db.query("SELECT variable,?? FROM language",[lang]);
console.log(rows);

但是这种格式对我来说并不是很有用...

[
  TextRow { variable: 'username',jp: 'ユーザ名' },TextRow { variable: 'password',jp: 'パスワード' }
]

我想要一个用户选择的对象,其中“变量”字段作为属性名称,所选语言的字段作为值。这样我就可以轻松地将它传递给视图引擎。像……

const language = {'username' : 'ユーザ名','password' : 'パスワード'
                  }

res.render("mypage",{ 'language': language });

...但是我可以在数据库中维护一些东西。

此外,如果有更有效或“普遍做法”的方式来维护多语言网站,我很感兴趣。

解决方法

好吧,我认为如果您将 JSON 数据类型用于多语言的相同值会更好。

cell.subCategories = indexData?.sub_categories

JSON 数据格式参见 MySql 参考:https://dev.mysql.com/doc/refman/8.0/en/json.html