Node.js 如何让D3读取车把上下文对象

Node.js 如何让D3读取车把上下文对象,node.js,express,handlebars.js,Node.js,Express,Handlebars.js,我正在使用Node+Express.js。我的一条路线渲染车把模板及其上下文。有关部分: my_data = JSON.parse(body); response.render( 'activity', my_data); 我的问题是:在activity.hbs模板中,如何使用D3从My_dataJSON对象创建绘图。在activity.hbs的相关部分中,我尝试了 <script type="text/javascript"> Handlebars.registerH

我正在使用Node+Express.js。我的一条路线渲染车把模板及其上下文。有关部分:

my_data = JSON.parse(body);
response.render( 'activity', my_data);
我的问题是:在
activity.hbs
模板中,如何使用D3从
My_data
JSON对象创建绘图。在
activity.hbs
的相关部分中,我尝试了

<script type="text/javascript">
      Handlebars.registerHelper('json', function(context) {
          return JSON.stringify(context);
      });

     var datas = {{json my_data}}
     d3.select("body")
     .datum(datas)
     .enter()
    #do stuff with data
  </script>

Handlebars.registerHelper('json',函数(上下文){
返回JSON.stringify(上下文);
});
var data={{json my_data}}
d3.选择(“主体”)
.基准(数据)
.输入()
#处理数据
之后我添加了助手。当我尝试渲染视图时,会出现一个错误:

对象缺少帮助程序:“json”。


使用助手是解决此问题的正确方法吗?如何让D3读取我的上下文对象?

我认为问题在于助手的定义,基本上是在错误的位置定义了助手。 要根据的文档定义助手,您必须在express app代码中注册它:

var express = require('express'),
    exphbs  = require('express3-handlebars'),

  app = express(),
  hbs;

  hbs = exphbs.create({
    // Specify helpers which are only registered on this instance.
    helpers: {
      // Your custom helper here
      json: function(context) { return JSON.stringify(context); }
    }
  });
  // Register it
  app.engine('handlebars', hbs.engine);
  app.set('view engine', 'handlebars');