[英]How to nest the same schema in mongoose js
我正在嘗試使用貓鼬js嵌套架構,特別是相同的架構,以創建樹狀結構。 在此配置中,一個文檔只能有1個父級,但是同一文檔可以是多個孩子的父級。 這是我最初的處理方式:
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var mySchema = new Schema({
_id: {
type: ObjectId,
required: true
},
parent: {
_id: {
type: ObjectId,
ref: 'myModel'
},
required: true
}
});
var myModel = mongoose.model('myModel', mySchema);
module.exports = {
myModel: mongoose.model('myModel', myModel)
};
但是,當我運行此程序時,我得到了
A JavaScript error occurred in the main process Uncaught Exception: TypeError: Undefined type "undefined" at "file.required" Did you try nesting Schemas? You can only nest using refs or arrays.
我一定要解決這個錯誤。 如何使用貓鼬js嵌套相同的架構?
該警告已經顯示“您只能使用引用或數組進行嵌套”。 這是貓鼬的設計。
但是您可以做的是:
var MySchema = new mongoose.Schema({
objectId: String,
parent: {
type: mongoose.Schema.ObjectId,
ref: 'MySchema'
},
})
這將使用架構內的架構,然后您可以使用“預保存”來更新父級的數據。 或者,您可以使用ref數組並僅保留1個元素。
要做的是導出模式而不是模型,因此您可以嵌套它。 像這樣:
module.exports = MySchema;
然后,我有了一些appModel來設置我的模式集合的模型,例如(app_model.js):
if(mongoose.modelNames().indexOf('mySchema') < 0) mongoose.model('mySchema', mySchema);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.