2012-01-11 29 views
1

我被困在試圖弄清楚這是否可能。如何返回最後一個push()嵌入式文檔

使用博客例如,從貓鼬展示,但我的實際使用情況稍微複雜一些:

var Comments = new Schema({ 
    title  : String 
    , body  : String 
    , date  : Date 
}); 

var BlogPost = new Schema({ 
    author : ObjectId 
    , title  : String 
    , body  : String 
    , date  : Date 
    , comments : [Comments] 
}); 

var BlogPost = mongoose.model('BlogPost'); 
var post = new BlogPost(); 

我需要建立一個新的評論和評論返回給客戶端。作爲嵌入式文檔發表評論對我來說非常方便,並且運行良好。但是,我不希望每次添加新的評論時都向客戶端返回每條評論。

post.comments.push({ title: 'My comment' }); 

由於我使用的是貓鼬,如果我能一些如何獲得新的意見,幫助,也讓我增加其它功能,如編輯評論或刪除評論的id

做到這一點的唯一方法是將評論作爲自己的收藏?

回答

1

我想你想解決的問題是如何在客戶發表評論後更新頁面,對吧?

所以,你插入一個新的評論。這意味着你已經有了它的數據。執行插入並將數據返回給客戶端。或者,更好的是,返回一個簡單的答案,因爲客戶端也有完整的評論數據,並且可以自行呈現。

+0

這肯定有幫助,但沒有某種「id」客戶端無法做任何進一步的評論。例如刪除它,編輯它等。我可以得到新的嵌入式文檔的「ID」? – Tom 2012-01-11 06:23:59

+0

@Tom:嵌入式文檔沒有ID。除非你自己分配它們。但是,DB沒有進行任何唯一性檢查,這一切都在你身上。你可以在你的node.js代碼中生成一個唯一的ObjectId。 – 2012-01-11 06:26:21

+0

謝謝塞爾吉奧。我使用的是貓鼬,它爲你增加了那種魔力:) – Tom 2012-01-11 06:31:27

相關問題