3

我定义了以下嵌入式文档 Mongoose 模型

    var mongoose = require("mongoose");
    module.exports = function(mongoose) {
        var Schema = mongoose.Schema,
            chapters, articles;

        Articles = new Schema({
            identity: Number,
            order: Number,
            quick_title: String,
            full_title: String,
            last_edited: Number,
            contributor: [String],
            content: String,
            video_link: String,
            presentation_link: String,
            question_id: [Number],
            show_in_chapter: Boolean,
            summary_text: String,
            summary_image: String
        });
        chapters = new Schema({
            order: Number,
            title: String,
            articles: [Articles]
        });

        return mongoose.model('chapters', chapters);
    }

通过 .find 获取整个模型数据库后,我目前正在尝试使用作者推荐的方法(使用 EJS 模板引擎)将其引导到一个主干JS模型中:

    var Chapters = Backbone.Collection.extend({});
    chapters = new Chapters( JSON.stringify(<%=chapters%>));

我已经尝试了很多方法让它工作,使用上面的代码它会给我错误 Unexpected SyntaxError Unexpected Number (参考第一个标题是第 1 章)

关于如何将此 Mongoose 模型转换为 Backbonejs 模型的任何想法?谢谢!

更新:

通过在将其发送到模板然后在模板中使用 stringify 使其工作,并用括号覆盖它:chapters = new Chapters("(" + <%-chapters2%> + ")");

不幸的是,这并没有给我想要的 Backbone 集合。当我'console.log(chapters.toJSON());'时,它只给了我以下

[
Object
([object Object],[object Object],[object Object],[object Object]): Object
__proto__: Object
]

使用 .at 方法时,在 (0) 处也只有一个模型。有任何想法吗?

4

2 回答 2

1

如果您没有在服务器上进行 JSON.stringify,请尝试使用 <%-chapters%> 进行未转义缓冲

chapters = new Chapters(<%- JSON.stringify(chapters) %>);
于 2012-07-23T12:58:44.243 回答
0

要在更新后回答您的问题,如果您在服务器端使用 JSON.stringify,以下内容适用于我

var Chapter = Backbone.Model.extend({});
var Chapters = Backbone.Collection.extend({
    model: Chapter
});
var collection = new Chapters(<%-names%>);
console.log(collection.toJSON());
于 2012-07-24T13:07:43.147 回答