【问题标题】:Bootstrapping data to a page rendered with handlebars将数据引导到使用把手呈现的页面
【发布时间】:2015-08-11 21:58:49
【问题描述】:

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

快速总结:我有一个通过 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>

它每次都会加载数据,但很难解析它的是浏览器。我得到'parse error ILLEGAL'、unexpected tokens 等。但重申一下:它必须是格式化的东西。

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

谢谢

山姆

【问题讨论】:

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


【解决方案1】:

结果是,这是客户端的问题。

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

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

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

字符串的长度仍然存在一个神秘的限制:超过 150 个左右的对象,JSON 解析加载失败。否则:效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多