我的应用程序基于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类型。
对于第二种类型_id,当它从客户端传递时它将是一个 字符串不是objectid。对于这两种类型的doc,用户都会发送查询 类似 / students / find?query = {_ id:" student1"} 或者 {_ id:" 535f7d05e1b08ddc13dfbaf0"} 。现在在服务器第二个查询必须修改为 {_ id:ObejctId(" 535f7d05e1b08ddc13dfbaf0")}。
我不知道如何区分两者。
我面临的主要问题是从发送文档之间丢失的数据类型 JSON中的客户端到服务器端
现在我将它以字符串形式包装在客户端,并可以在服务器端将其转换回来。
由于mongoDB不是特定类型的,我不知道我应该在客户端转换什么值,什么不能。
用户定义和自生成都在服务器端接收为String类型,这使得重新转换成一项艰巨的工作。
我的要求是我不想在服务器端进行转换。
这有可能吗?
答案 0 :(得分:1)
你不能,JSON RFC:
JSON可以表示四种基本类型(字符串,数字,布尔值, 和null)和两个结构化类型(对象和数组)。
您必须在将日期发送到服务器后解析日期:
var doc = JSON.parse(doc);
doc.duedate=new Date(doc.duedate);