我的应用程序基于 Node.js 和 MongoDB,使用 REST API。
我的输入数据采用以下形式
var doc={"name":"ABX", duedate : new Date() }
我在将其传递到服务器之前对其进行字符串化
/rest/update?doc=JSON.stringify(doc)
并在服务器端将其转换回 JSON,如下所示:
var doc = JSON.parse(doc)
现在的问题是它将数据字符串化为:
var doc = {"name":"ABX","duedate":"2014-04-30T18:30:00.000Z"}
如果相同的值发送到 mongo,那么它将把 duedate 保存为字符串。所以需要做类似 doc.duedate = new Date(doc.duedate) 的事情。但我没有任何字段定义,所以我怎么知道有些字段需要转换为日期而有些则不需要。
使用 MongoDB 的 _id 字段时情况类似。
我的客户端通过两种方式生成文档的_id:
1 : _id:"student1"-> 用户指定的字符串类型
2: _id:535f7d05e1b08ddc13dfbaf0 -> mongoDB生成的ObjectId类型。
For second type _id, when it is passed from client side it will be a string not a objectid. For both type of doc, user will send query something like /students/find?query={_id:"student1"} OR {_id:"535f7d05e1b08ddc13dfbaf0"} . Now at server second query must be modified as {_id: ObejctId("535f7d05e1b08ddc13dfbaf0")}.
我不知道如何区分两者。
Major issue I am facing is the datatype lost between sending doc from client side to server side in JSON
现在我在客户端将其以字符串形式包装,并可以在服务器端将其转换回。
由于 mongoDB 不是特定于类型的,我不知道应该在客户端转换什么值,不应该转换什么值。
用户定义的和自行生成的数据都以字符串类型的形式在服务器端接收,这使得重新转换成为一项艰巨的工作。
My requirement is that i don't want conversion on server side.
- 客户端可以发送对象或字符串,并且应按原样存储在后端。
这有可能吗?
最佳答案
你不能,从JSON RFC :
JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).
您必须在将日期发送到服务器后解析它:
var doc = JSON.parse(doc);
doc.duedate=new Date(doc.duedate);
关于javascript - 在 Node.js + MongoDB 中使用 REST API 插入和查询 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428843/