将数据引导到使用把手呈现的页面

时间:2013-06-21 14:15:51

标签: backbone.js express mongoose handlebars.js bootstrapping

我无法在初始页面加载时引导数据。

快速摘要:我有一个快速服务器通过mongoose与MongoDB进行交互。所有这些部件都运作良好。服务器服务索引页面很好,它运行了很多Backbone脚本。索引页面运行正常,Backbone能够通过API从服务器获取数据。所有这些都很有效。

我正在尝试设置它,以便服务器快速调用MongoDB并在大约50个模型实例上启动。这是索引页面调用的路由:

var professorModel = require('../data/models/prof');

module.exports = function (app) {

  app.get('/', function (request, response) {

    professorModel.find().limit(50).exec(function (error, docs) {

    // Also tried: .find().lean().exec(function .... )
    // Also tried: docs = JSON.stringify(docs) ... (with a JSON.parse() on the other end). 
    // Also tried: docs.forEach(function (e, i, a) { newDocs.push(e.toJSON())})...

    response.render('index', { bootstrap : docs });

  });

};

在索引页面上,它只是<script> var bootstrap = {{{bootstrap}}}; </script>

每次加载数据,但是解析它的浏览器很难。我得到'解析错误ILLEGAL ',意外令牌等等。但重申一下:它必须是格式化的东西。

在快速文档中,它指出response.send()对它发送的内容很聪明,并自动将对象编码为json。这里的问题是response.render()没有这样做吗?我觉得这里应该有一个简单的解决方案。

由于

萨姆

1 个答案:

答案 0 :(得分:0)

正如它解决的那样,这是客户端的一个问题。

以前,我的代码是:var bootstrap = {{{bootstrap}}};

这里的bootstrap变量不是作为字符串接收的:它是作为对象接收的。将变量放在单引号之间解决了这个问题:

var bootstrap = '{{{bootstrap}}}';

字符串的长度仍有一个神秘的限制:过去150个左右的对象,JSON解析失败了。否则:效果很好。