Mongoose 中的子文档数组
Posted
技术标签:
【中文标题】Mongoose 中的子文档数组【英文标题】:Array of subdocuments in Mongoose 【发布时间】:2017-09-17 23:15:59 【问题描述】:我有两个架构。
FAQ Schema
const EventFAQSchema = mongoose.Schema(
question: type: String, req: true ,
answer: type: String, req: true
);
EventSchema
const EventSchema = mongoose.Schema(
"title": type: String ,
"description": type: String ,
"eventFAQs": [
type: EventFAQSchema ,
default: EventFAQSchema
]
)
我正在尝试嵌入一个常见问题类型的对象数组。但我收到以下错误
Undefined type 'undefined' at array 'eventFAQs'
我知道我缺少对象数组的基本概念。但是我花了很多时间试图找出原因,但自己无法解决。
【问题讨论】:
在代码中输入错误是正确的... 【参考方案1】:尝试:
"eventFAQs":
type: [ EventFAQSchema ],
default: [
question: "default question",
answer: "default answer"
]
编辑
model.js
const mongoose = require('mongoose');
const EventFAQSchema = mongoose.Schema(
question: type: String, required: true ,
answer: type: String, required: true
);
const EventSchema = mongoose.Schema(
"title": type: String ,
"description": type: String ,
"eventFAQs":
type: [ EventFAQSchema ],
default: [
question: 'Question',
answer: 'Answer'
]
);
module.exports = mongoose.model('Event', EventSchema);
用法:
const Event = require('./model.js');
var e = new Event(
title: "Title"
);
e.save(function (err)
console.log(err); // NO ERROR
);
结果:
"_id" : ObjectId("58f99d1a193d534e28bfc70f"),
"title" : "Title",
"eventFAQs" : [
"question" : "Question",
"answer" : "Answer",
"_id" : ObjectId("58f99d1a193d534e28bfc70e")
],
"__v" : NumberInt(0)
【讨论】:
这给了我一个嵌入式文档,我需要一个嵌入式文档数组 当我遍历 req 并创建一个 EventFAQ 数组并在创建事件文档时将其放入时,只有默认的“问题”和“答案”被采用。 这也可以:var faqs = [ question: 'question1', answer: 'answer1' , question: 'question2', answer: 'answer2' , question: 'question3', answer: 'answer3' ];
和 var e = new Event( title: "Title", eventFAQs: faqs );
以上是关于Mongoose 中的子文档数组的主要内容,如果未能解决你的问题,请参考以下文章
Node.js/mongoose - 数组中的子文档不会删除/移除