【问题标题】:Bootstrap mongoose models into BackboneJS将猫鼬模型引导到 BackboneJS
【发布时间】:2012-07-21 08:50:43
【问题描述】:

我定义了以下嵌入式文档 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("(" + &lt;%-chapters2%&gt; + ")");

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

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

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

【问题讨论】:

    标签: json backbone.js mongoose express


    【解决方案1】:

    如果您没有在服务器上进行 JSON.stringify,请尝试使用 进行非转义缓冲

    chapters = new Chapters(<%- JSON.stringify(chapters) %>);
    

    【讨论】:

    • 出现同样的错误。如果我在 周围加上引号,那么它会在第一行读取时出现 Unexpected token ILLEGAL 错误: chapters = new Chapters( JSON.stringify("Chapter 1 - Something Interesting,{ summary_image: '@ 987654321@',
    • 在将其发送到模板之前使用 stringify 使其工作,然后将其放在括号中。仍然无法正确输出到 Backbone 模型。
    • 对不起,这是我的想法但完全错了,解决方案是:chapters = new Chapters(&lt;%- JSON.stringify(chapters) %&gt;);
    【解决方案2】:

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

    var Chapter = Backbone.Model.extend({});
    var Chapters = Backbone.Collection.extend({
        model: Chapter
    });
    var collection = new Chapters(<%-names%>);
    console.log(collection.toJSON());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2018-03-04
      • 2018-07-15
      相关资源
      最近更新 更多