如何使用Mongoose + Express.js存储数组?

时间:2015-04-10 21:33:17

标签: javascript node.js mongodb mongoose

我是MongoDB的新手,我想存储一个数组。

这是我想要的一个例子

question : {
    question : "My question",
    answer   : "My answer",
    subQuestions : 
    [0] {
        question: "My sub question",
        answer  : "My sub answer"
    },
    [1] {
        question: "My other sub question", 
        answer  : "My other sub answer"
    }
}

但我没有成功在subQuestions中放入多个条目。我得到了这个:

question : {
    question : "My question",
    answer   : "My answer",
    subQuestions : {
        question {
            [0] : "My sub question",
            [1] : "My other sub question"
        },
        answer {
            [0] : "My sub answer",
            [1] : "My other sub answer"
        }
    }
}

我实际上很难在前面处理,我真的想拥有我在第一个集团中展示的内容。

这是我的实际架构:

var Questions = new Schema({
    question: { type: String },
    answer  : { type: String },
    subQuestions : {
        question : [String],
        answer   : [String]
    }
});

我的保存脚本:

var q = new Questions;
q.subQuestions.question = ["My sub question", "My other sub question"];
q.subQuestions.answer   = ["My sub answer", "My other sub answer"];

q.save(function(err){
    console.log(err);
});

有人可以帮我吗?我有一段时间了,所以也许这只是我没想到的一件小事。

非常感谢您,不要犹豫,向我提问。

1 个答案:

答案 0 :(得分:2)

您只需在架构中定义一个数组:

var Questions = new Schema({
    question: { type: String },
    answer  : { type: String },
    subQuestions : [{
        question : String,
        answer   : String
    }]
});

请注意,我更改了花括号。

要添加新的子问题,您可以使用push()

q = new Questions
sq.question = "How are you doing?"
sq.answer = "Great."
q.subQuestions.push(sq)

我没有测试这段代码,但它首先从两个字符串(这是sq对象)组装一个JavaScript对象,然后将其推送到数组。