2013-06-21 27 views
0

我在初始頁面加載時引導數據時遇到問題。將數據引導到使用把手呈現的頁面

快速總結:我有一個快速服務器通過貓鼬與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',意外令牌等。但要重申:它必須是格式化的東西。

在express文檔中,它指出response.send()對於它發送的內容很聰明,並自動將對象編碼爲json。這裏的問題是response.render()不是這樣嗎?我覺得這裏應該有一個簡單的解決方案。

感謝

山姆

+0

你必須JSON.stringify它...這裏是相當於玉....!{JSON.stringify(bootstrap)} – imrane

+0

http://stackoverflow.com/questions/10232574/handlebars-js-parse -object-代替-的對象物體 – imrane

回答

0

由於它的工作,這是對客戶端的問題。

此前,我的代碼是:var bootstrap = {{{bootstrap}}};

這裏的引導變量沒有被作爲字符串接收:它作爲一個對象被接收。把單引號之間的變量來解決這個問題:

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

目前仍然在字符串的長度神祕限制:過去的150米左右的物體時,JSON解析失敗,載。否則:效果很好。