2012-10-16 57 views
2

我無法找到我在做什麼錯... 我試圖在貓鼬模型中定義子文檔,但是當我將模式定義拆分爲另一個文件時,兒童模型不受尊重。爲什麼mongoose.model('Model')。模式出錯了?

首先,定義一個註釋的模式:

var CommentSchema = new Schema({ 
    "text": { type: String }, 
    "created_on": { type: Date, default: Date.now } 
}); 
mongoose.model('Comment', CommentSchema); 

接下來,創建由mongoose.model(加載另一個模式)(就像我們從另一個文件

var CommentSchema2 = mongoose.model('Comment').Schema; 

現在定義父加載它模式:

var PostSchema = new Schema({ 
    "title": { type: String }, 
    "content": { type: String }, 
    "comments": [ CommentSchema ], 
    "comments2": [ CommentSchema2 ] 
}); 
var Post = mongoose.model('Post', PostSchema); 

和一些測試

var post = new Post({ 
    title: "Hey !", 
    content: "nothing else matter" 
}); 

console.log(post.comments); // [] 
console.log(post.comments2); // [ ] // <-- space difference 

post.comments.unshift({ text: 'JOHN' }); 
post.comments2.unshift({ text: 'MICHAEL' }); 

console.log(post.comments); // [{ text: 'JOHN', _id: 507cc0511ef63d7f0c000003, created_on: Tue Oct 16 2012 04:07:13 GMT+0200 (CEST) }] 
console.log(post.comments2); // [ [object Object] ] 

post.save(function(err, post){ 

    post.comments.unshift({ text: 'DOE' }); 
    post.comments2.unshift({ text: 'JONES' }); 

    console.log(post.comments[0]); // { text: 'DOE', _id: 507cbecd71637fb30a000003, created_on: Tue Oct 16 2012 04:07:13 GMT+0200 (CEST) } // :-) 
    console.log(post.comments2[0]); // { text: 'JONES' } // :'-(

    post.save(function (err, p) { 
     if (err) return handleError(err) 

     console.log(p); 
    /* 
    { __v: 1, 
     title: 'Hey !', 
     content: 'nothing else matter', 
     _id: 507cc151326266ea0d000002, 
     comments2: [ { text: 'JONES' }, { text: 'MICHAEL' } ], 
     comments: 
     [ { text: 'DOE', 
      _id: 507cc151326266ea0d000004, 
      created_on: Tue Oct 16 2012 04:07:13 GMT+0200 (CEST) }, 
     { text: 'JOHN', 
      _id: 507cc151326266ea0d000003, 
      created_on: Tue Oct 16 2012 04:07:13 GMT+0200 (CEST) } ] } 
    */ 

     p.remove(); 
    });  
}); 

正如您所看到的,通過CommentSchema,可以正確設置ID和默認屬性。但是在CommentSchema2中,加載的是錯誤的。

我試過使用'人口'版本,但它不是我要找的東西。我不想使用另一個集合。

你們中有人知道有什麼問題嗎?謝謝 !

貓鼬V3.3.1

的NodeJS v0.8.12

全部要點:https://gist.github.com/de43219d01f0266d1adf

回答

1

模型的Schema對象是Model.schema,不Model.Schema訪問。

所以你要點的第20行更改爲:

var CommentSchema2 = mongoose.model('Comment').schema; 
+0

非常感謝!我錯過了「睜大眼睛的RTFM」部分...... – Balbuzar