将猫鼬模型引导到 BackboneJS

Posted

技术标签:

【中文标题】将猫鼬模型引导到 BackboneJS【英文标题】:Bootstrap mongoose models into 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) 处也只有一个模型。有什么想法吗?

【问题讨论】:

【参考方案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());

【讨论】:

以上是关于将猫鼬模型引导到 BackboneJS的主要内容,如果未能解决你的问题,请参考以下文章

将猫鼬数据传递到 Angular 4 组件“详细信息”页面?

如何将猫鼬连接方法分离到另一个JS文件?

打字稿模型添加猫鼬身份验证

无法将猫鼬虚拟与打字稿一起使用

无法将猫鼬虚拟与打字稿一起使用

将猫鼬列从对象更改为 ObjectId