【问题标题】:Node JS not displaying my data to the template节点 JS 没有向模板显示我的数据
【发布时间】:2015-10-02 11:11:28
【问题描述】:

我正在从 Yelp API 查询一些数据。业务的 Console.log 在终端中运行良好,但是当我调用相同的变量在模板中呈现时,什么都没有显示。

/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: 'Express' });
});

/*GET Hello World page. */
router.get('/helloworld', function(req, res){
    var first;
    yelp.search({location: "tempe", term: "sandwiches", category_filter: "food"}, function(error, data) {
        var test = JSON.stringify(data); //Changes yelps response to JSON Objects with double quotes
        test = JSON.parse(test); //JSON.parse can now parse correctly after stringify is used.
     //     for(var i = 0; i < 9; i++){
        //    console.log(test['businesses'][i]['name']);
        //  // console.log(test['businesses'][i]);
        // }
        console.log(test['businesses'][0]['name']);
        first = test['businesses'][0]['name'];

    });
    res.render('helloworld', {
            title: 'Hello, World',
            name: first
    });
});

module.exports = router;

【问题讨论】:

  • 在将值赋给 first 之后,尝试在回调函数中添加对渲染的调用。现在的写法是 res.render 在第一次被赋值之前执行,这可能是什么都不显示的原因。

标签: javascript jquery node.js pug


【解决方案1】:

yelp.search 是异步的。您必须在回调中调用res.render,例如:

yelp.search({location: "tempe", term: "sandwiches", category_filter: "food"}, function(error, data) {
    var test = JSON.stringify(data); //Changes yelps response to JSON Objects with double quotes
    test = JSON.parse(test); //JSON.parse can now parse correctly after stringify is used.
 //     for(var i = 0; i < 9; i++){
    //    console.log(test['businesses'][i]['name']);
    //  // console.log(test['businesses'][i]);
    // }
    console.log(test['businesses'][0]['name']);
    first = test['businesses'][0]['name'];

    res.render('helloworld', {
        title: 'Hello, World',
        name: first
    });
});

,否则会在yelp.search返回之前调用。

【讨论】:

    【解决方案2】:

    是异步回调。 当yelp.search exec 并且回调仍未执行时,name 未定义。所以你的渲染{name:'undefined'}。 除了@Rodrigo Medeiros 的方法,你还可以使用一些模块来解决。例如:qasnycbluebird 等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 2019-12-07
      • 2012-05-26
      相关资源
      最近更新 更多