2013-07-18 109 views
9

我的問題是與貓鼬(Mongodb)一對多映射。一個是訂單(買方數據),許多是物品(價格,數量等)。貓鼬一對多映射,如何接收和處理?

1)我應該如何爲訂單和物品創建架構,就像我應該按順序將物品放入數組中?

2)所有的數據都會在一個post函數中嗎?

我可以使用ObjectId來連接多對一,但我不知道如何。

回答

14

由於訂單聽起來這將有一個相對較小的項目數,最簡單的事情很可能只是一個項目ID列表:

var OrderSchema = new mongoose.Schema({ 
    items: [{type: mongoose.Schema.Types.ObjectId, ref: 'Item'}] 
}); 

var ItemSchema = new mongoose.Schema({ 
    price: Number, 
    quantity: Number 
}); 

大多數的用戶界面不會在一個單一的構建整個訂單POST功能,因此最好允許創建訂單,然後通過order.items.push(itemId)單獨向其添加項目。

+0

因此,我會像「app.post('/ uri',api.function)」這樣的順序和項目,然後在api(控制器)有一個回調函數中創建項目推要訂購的物品? – Mike

+0

嗯,是的,雖然創建一個項目聽起來像它屬於一個單獨的庫存管理應用程序與創建一個電子商務活動的訂單。抱歉,我不能通過應用程序設計來指導您。這個網站是針對特定的編程問題。 –

+0

這是否需要ItemSchema與OrderSchema位於同一個文件中?我想知道即使ItemSchema是在另一個文件中定義的,ref字段也會被解決。 –