将猫鼬模型引导到 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("(" + <%-chapters2%> + ")");
不幸的是,这并没有给我想要的 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(<%- JSON.stringify(chapters) %>);
【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章