javascript - 如何在 mongoose js 中嵌套相同的模式

标签 javascript node.js mongodb

我正在尝试使用 mongoose js 嵌套模式,特别是 same 模式,以创建树状结构。在此配置中,一个文档只能有 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)
};

但是,当我运行它时,我得到了

主进程发生JavaScript错误 未捕获的异常: TypeError:“file.required”处的未定义类型“undefined” 你试过嵌套模式吗?您只能使用 refs 或数组进行嵌套。

我一定是处理错了。如何使用 mongoose js 嵌套相同的模式?

最佳答案

警告已经向您显示“您只能使用引用或数组进行嵌套。”。这是一个 Mongoose 设计。

但是你能做的是:

var MySchema = new mongoose.Schema({
    objectId: String,
    parent: {
        type: mongoose.Schema.ObjectId,
        ref: 'MySchema'
    },
})

这将使用模式中的模式,然后您可以使用“预保存”来更新父级的数据。或者您可以使用一组 refs 并仅保留一个元素。

要做的是导出模式而不是模型,因此您可以嵌套它。 像这样:

module.exports = MySchema;

然后我有一些 appModel 来设置我的模式集合的模型,就像这样 (app_model.js):

if(mongoose.modelNames().indexOf('mySchema') < 0) mongoose.model('mySchema', mySchema);

关于javascript - 如何在 mongoose js 中嵌套相同的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703088/

相关文章:

javascript - 无法使用 JQuery 使多行可编辑

javascript - 如何在没有 Web 服务器的情况下将变量数据从 Python 传输到 Javascript?

java - 如何从 JSON 创建 Mongoose 模式

javascript - 应用于 HTML 元素的 JavaScript 动画问题

node.js - Firebase 消息传递 send() 错误与 UnhandledPromiseRejectionWarning

javascript - 有没有办法从 Node.js 中的特定位置向网站发送请求?

node.js - MongoDB 批量插入已经存在许多文档的地方

ruby-on-rails - Mongoid 默认范围覆盖默认值。为什么?

node.js - 如何正确关闭 Node.js 服务器上的 MongoClient 连接?

javascript - D3 Dimple - "others"类别中的组小数据系列