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
非常感謝!我錯過了「睜大眼睛的RTFM」部分...... – Balbuzar