使用Node.js + MongoDB中的rest api插入和查询JSON数据

时间:2014-05-02 13:03:16

标签: javascript json node.js mongodb rest

我的应用程序基于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类型,这使得重新转换成一项艰巨的工作。

  

我的要求是我不想在服务器端进行转换。

  • 客户端可以发送Object或String,它应该按原样存储在后端。

这有可能吗?

1 个答案:

答案 0 :(得分:1)

你不能,JSON RFC

  

JSON可以表示四种基本类型(字符串,数字,布尔值,      和null)和两个结构化类型(对象和数组)。

您必须在将日期发送到服务器后解析日期:

var doc = JSON.parse(doc);
doc.duedate=new Date(doc.duedate);