【问题标题】:Node.js + Espress + MySQL as Document Store (results)Node.js + Express + MySQL 作为文档存储(结果)
【发布时间】:2018-02-25 20:01:03
【问题描述】:

我在 Node.js 中创建了一个 express 应用

  • express v4.16.2
  • mysql v2.15.0

我使用 MySQL 作为文档存储

Columns    
id: integer
value: JSON

当我通过 mysql 查询 MySQL 数据库时,我得到了结果:

RowDataPacket {
id: '1',
date: '2018-02-25T17:48:52.000Z',
value: '{"name": "Andreas", "username": "andreaslacza", "gender": "Male"}'
},
// ... and so on

您可以看到我的 JSON 嵌套在 values 下,但我需要如下输出才能在 mustache/handlebars 中使用它:

RowDataPacket {
"id": 1,
"date": "2018-02-25T17:48:52.000Z",
"value": {
    "name": "Andreas",
    "username": "andreaslacza",
    "gender": "Male"}
},

【问题讨论】:

  • 因为value 以字符串形式出现,您需要在value 属性上使用JSON.parse
  • @suraj.tripathi 我怎样才能为所有值做到这一点?
  • typeof RowDataPacket 输出什么?你能打电话给toString()吗?
  • @EvyatarMeged 它是 mysql 的输出对象,我可以在 mustache 中循环遍历它,但在对象中我必须只解析值并为其创建一个新的 json,但我现在不知道如何

标签: javascript mysql node.js express nosql


【解决方案1】:

以下 sn-ps 假设您在 JavaScript 中使用类似 async/await 的东西,但如果您使用回调和承诺,这将同样有效。

假设您正在使用类似的方法从数据库中获取信息

// Get data from our DB using the `mysql` library...
var dbResult = await dbRequest();

var data = JSON.parse(dbResult.value);

然后您就可以获取dbResult.value 对象并将其转换为JSON,就像我们在上面所做的那样。这将允许我们像使用任何对象一样将其用作 JavaScript 对象。

然后我们可以将其注入到车把模板中,并使用如下所示的内容。这假设您将其传递到名为“data”的对象的把手中,尽管它也可能是“user”甚至“this”。

<p>{{data.name}}</p>
<p>{{data.username}}</p>

哪个会渲染

Andreas
andreaslacza

【讨论】:

    【解决方案2】:

    您需要遍历结果数组并将JSON.parse 应用于每个值。

    这样

    'use strict'
    let resultData = [
    	{
    		id: '1',
    		date: '2018-02-25T17:48:52.000Z',
    		value: '{"name": "Andreas", "username": "andreaslacza", "gender": "Male"}'
    	},{
    		id: '1',
    		date: '2018-02-25T17:48:52.000Z',
    		value: '{"name": "Andreas", "username": "andreaslacza", "gender": "Male"}'
    	}
    ];
    
    resultData.forEach(function(entry) {
    	entry.value = JSON.parse(entry.value);
    });
    
    console.log(resultData);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2011-04-20
      • 2013-06-29
      • 1970-01-01
      相关资源
      最近更新 更多