我被跟踪了 JSONObject
来自客户。
{
"registerationId": 57502,
"firstName": "Taha",
"lastName": "Kirmani",
"dob": "10-08-1988",
"cnic": 4210137718361,
"gender": "Male"
}
我现在就是这样解析的。
app.post('/addUser', function (req, res) {
var registrationId= req.body.registerationId;
var firstName= req.body.firstName;
var lastName= req.body.lastName;
var dob= req.body.dob;
//var randomQuery = connection.query('INSERT INTO students `COLUMN NAME` VALUES `VALUES NAME` //);
//
})
通过上述方法,我可以将数据放入 MySQL database
,但我正在寻找更有效的方法。
我想做的是通过考试 jsonObject
至 query
,它将数据插入到db中,因此我不会执行 req.body.id
每条路线的步骤。
我在找这样的东西;
(insert into table (?) VALUES (?) , req.keys, req.values)
2条答案
按热度按时间8mmmxcuj1#
解决这个问题有多种方法。
使用orm库。对象关系Map器或orm是一个库,可以帮助您从关系数据库(如mysql)存储和检索对象。它帮助您为您的用例创建适当的sql字符串(无论是创建、读取、更新还是删除)。node.js有很多可用的orms。这里有几个:书架,续集,反对意见。关于orm的几点注记
它们使真正简单的操作变得容易(crud)
通常支持更复杂的查询(join、groupby等)
真正复杂的查询通常很难实现,但它们通常支持使用原始sql,因此如果需要,您可以自己创建它们。
通常,它们仍然要求您为特定表定义列和类型。所以还有一点工作要做。
将信息存储为json。如果您真的想按原样存储json数据,可以选择直接将json对象写入数据库。有关此方法的一些注意事项:
存储将非常容易-您不需要执行复杂的查询。
检索会有点困难,除非您的数据库支持json数据类型,并允许对该类型进行索引(MySQL5.7对此有一定的支持)
架构没有强制执行,当将来的版本需要对架构进行更改时,这可能会给您带来问题—您必须处理一些可能没有新字段的值。
一般来说,我建议您使用orm将信息存储为json。从经验来看,如果这样做的话,维护起来会变得非常困难,而且在mysql中,对json索引的支持相对较新。如果您认为这真的更好,我建议使用非关系数据库而不是mysql。
然而,对于大多数用例,选项1(orm)可能是安全的选择。
iyzzxitl2#
您不能简单地用sql来实现这一点。在sql语法中,列的名称和
VALUES
子句必须在分析查询时修复。当然,列必须存在于表定义中。如果您的js对象有与实际列不匹配的额外属性,那么无论如何它都不会工作。
要实现您的意图,您需要一些js类来了解表中存在的列。它将挑选js对象中名称与表中已知列匹配的属性子集,我假设忽略其他属性。或者如果有不合法的财产,你会希望它引起错误吗?
这说明了一个问题- 您希望Map所做的并不一定是其他人希望它做的。甚至不知道你想让它在你的其他应用程序中做什么。