簡體   English   中英

如何在貓鼬js中嵌套相同的架構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM