2014-05-02 69 views
0

我的應用程序基於使用rest api的Node.js和MongoDB。在Node.js + MongoDB中使用rest api插入和查詢JSON數據

我輸入數據的形式

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字段。

我的客戶端2點的方式產生用於文件_id:

1:_id: 「student1」 - >的字符串是用戶類型指定

2:_id:535f7d05e1b08ddc13dfbaf0 - >的ObjectId通過MongoDB中生成的類型。

對於第二類型_id中,當從客戶端傳遞這將是一個 串不是OBJECTID。對於這兩種類型的文檔中,用戶將發送查詢 像/學生/查找查詢= {_ ID: 「student1」}? OR {_id: 「535f7d05e1b08ddc13dfbaf0」}。現在在服務器上,第二個查詢必須修改爲{_id:ObejctId(「535f7d05e1b08ddc13dfbaf0」)}。

我不知道如何區分兩者。

我現在面臨的主要問題是JSON發送文檔之間丟失從 客戶端向服務器端的數據類型

現在我包裹起來以字符串形式的客戶端,可以將其轉換回到服務器端。

由於mongoDB不是類型特定的,我不知道我應該在客戶端轉換什麼值,什麼不是。

在服務器端接收到用戶定義的和自我生成的字符串類型,這使得重新轉換艱鉅的工作。

我的要求是我不想在服務器端進行轉換。

  • 客戶端可以發送任何對象或字符串,它應該被存儲爲是在後端。

這有可能以任何方式嗎?

+0

你可以用它轉換:'VAR DOC = JSON.parse(DOC); doc.duedate = new Date(doc.duedate);',但你可能想[看這篇文章](http://stackoverflow.com/questions/3778428/best-way-to-store-date-time-在蒙古語中)。 –

+0

@TimCooper我已更新我的問題。再看一遍。 – vashishatashu

回答

1

你不能從JSON RFC

JSON可以表示四個基本類型(字符串,數字,布爾值, 和空)和兩個結構化類型(對象和數組)。

你必須把它發送到服務器後,解析日期:

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

謝謝邁克爾,因爲mongo不需要字段定義,在我的應用程序中類似的方式,我想給用戶免費的手支持手段,他們可以插入他們想要的。不需要字段定義,所以我如何才能知道某個特定字段需要轉換爲Date還是不需要。 – vashishatashu

相關問題