2011-12-09 97 views
2

所以我在DB中有一個基本上是博客文章的對象,裏面有一個引用Categories集合的ObjectID的數組。Mongoose/MongoDB - 保存一條記錄來覆蓋當前數據:

所以

Posts = { 
    title: String, 
    Content: String, 
    Categories: [{ 
     type: ObjectID, 
     ref: 'Categories' 
    }] 

我可以創造的職位罰款,問題是當我嘗試更新他們:

post.title = 'hi'; 
post.content = 'content'; 
post.categories = ['44523452525','4e1342413421342']; 

post.save(function(){}); 

出於某種原因,這將增加那些2個類別,而不是抹類別陣列並插入這些。

我該如何去除它們並插入新的?

+0

你有沒有找到解決這個問題的方法?我正在目睹我的系統上使用Mongoose 3.0.0的相同行爲。 一個有趣的注意事項:將數組字段設置爲空數組([])似乎工作。 – Aaron

回答

5

我試圖重現此問題,但我不能 - 這裏的代碼示例,我跑:

var mongoose = require('mongoose') 
var Schema = mongoose.Schema 

mongoose.connect('mongodb://localhost/testjs'); 

PostSchema = new Schema({ 
    title:String, 
    content:String, 
    cats:[] 
}); 
var Post = mongoose.model('Post', PostSchema); 

var mypost = new Post() 
mypost.title = "x" 
mypost.content = "y" 
mypost.cats = ['a','b','c'] 
mypost.save(
    function(err){ 
    mypost.cats = ['d','e'] 
    mypost.save() 
    } 
); 

後第二次調用保存()數組只包含它被設置爲(「d 」, 「E」)。你可以試試看看你是否得到相同的結果?也許它與貓鼬版本有關,或者什麼。