【发布时间】:2014-06-19 04:18:27
【问题描述】:
我的应用程序基于 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,那么它会将到期日期保存为字符串。所以需要做类似 doc.duedate = new Date(doc.duedate) 的事情。但是我没有任何字段定义,所以我怎么知道有些字段需要转换为日期而有些则不需要。
使用 MongoDB 的 _id 字段时也是如此。
我的客户端以两种方式为文档生成_id:
1 : _id:"student1" -> 用户指定的字符串类型
2: _id:535f7d05e1b08ddc13dfbaf0 -> 由 mongoDB 生成的 ObjectId 类型。
对于第二种类型_id,当它从客户端传递时,它将是一个 字符串不是objectid。对于这两种类型的文档,用户将发送查询 类似于 /students/find?query={_id:"student1"} 或 {_id:"535f7d05e1b08ddc13dfbaf0"} 。现在在服务器第二个查询必须修改为 {_id: ObejctId("535f7d05e1b08ddc13dfbaf0")}。
我不知道如何区分两者。
我面临的主要问题是发送文档之间的数据类型丢失 JSON 格式的客户端到服务器端
现在我在客户端以字符串形式将其包装起来,并可以在服务器端将其转换回。
由于 mongoDB 不是特定类型的,我不知道我应该在客户端转换什么值,什么不转换。
用户定义和自行生成都在服务器端作为字符串类型接收,这使得重新转换成为一项艰巨的工作。
我的要求是我不想在服务器端进行转换。
- 客户端可以发送对象或字符串,它应该按原样存储在后端。
这有可能吗?
【问题讨论】:
-
您可以将其转换为:
var doc = JSON.parse(doc); doc.duedate = new Date(doc.duedate);,但您也可以使用look at this post。 -
@TimCooper 我已经更新了我的问题。请再看一遍。
标签: javascript json node.js mongodb rest