【问题标题】:Insert and Query JSON data using rest api in Node.js + MongoDB在 Node.js + MongoDB 中使用 rest api 插入和查询 JSON 数据
【发布时间】: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


【解决方案1】:

你不能,来自JSON RFC

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

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

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

【讨论】:

  • 感谢 Michael,AS mongo 不需要字段定义,就像我的应用程序中的类似方式,我想给用户免费的手动支持意味着他们可以插入他们想要的东西。不需要字段定义,因此我将如何知道是否需要将特定字段转换为日期。
猜你喜欢
  • 1970-01-01
  • 2022-10-06
  • 2020-01-02
  • 1970-01-01
  • 2011-09-06
  • 2018-03-07
  • 2020-11-23
  • 2018-03-11
  • 1970-01-01
相关资源
最近更新 更多