2013-02-15 86 views
0

我有兩個資源,名爲「project」和「tag」。添加新項目時,數據通過POST傳輸,並傳遞到project.create(req,res)。這將項目保存在mongodb數據庫中,併成功返回res.send(200);在另一個休息功能中調用休息功能

我想項目和標籤有許多一對多的關係,讓我可以很容易地列出所有標籤,列表項目標籤,並列出標籤項目。

存儲這些標籤的最簡單方法是在project.create函數中找到+插入這些標籤,然後將其數組的ID保存在數組project.tags中。但是,我覺得這是違反DRY ...我在tag.create(req,res)中有相同的標籤find + upsert代碼。

我怎樣才能讓這個當project.create被調用,調用tag.create?我也意識到,如果我創建了一些執行find + upsert的中間件,這會更好嗎?

回答

1

免責聲明:本答案涉及REST API的一般良好實踐(不特別適用於MongoDB)。

瞭解實際REST API的一個重要事情是,某些資源可以是隻讀的(通常由讀寫資源中的MapReduce生成)。

讓我們假設你有項目和關鍵字之間從概念上N-N關聯。項目中修改此類鏈接的更自然的地方。所以你必須,例如:

  • GETPUTDELETE/project/stackOverflow(實物),
  • GET/keyword/QnA(虛擬對象又名查詢)。
+0

這並不回答這個問題。我應該在處理POST到/ project的函數中創建關鍵字,還是應該在該函數內向/關鍵字發出POST請求? – 2013-02-17 23:11:32

+0

無論您是否使用冪等創建(使用PUT)或不使用(使用POST),這個想法都是一樣的。我試圖解釋的想法是關鍵字將在*項目中創建。關鍵字URL將是隻讀的。 – 2013-02-18 08:15:01

+0

太棒了,這樣做更有意義。非常感謝你! – 2013-02-18 21:15:37