Sails.js模型,从mysql数据库中选择一个特定的列

时间:2014-10-09 06:40:05

标签: javascript mysql node.js sails.js

我遇到一个问题,即模板文件中未定义GetName

代码: http://hastebin.com/wixomerapi.js

但如果我写

console.log(results[0].name);

而不是GetName = results[0].name它的工作正常!

这里有什么不对吗? :/

2 个答案:

答案 0 :(得分:1)

更好的解决方案是使用options参数并设置选择。

Model.find({field: 'value'}, {select: ['id', 'name']})
  .paginate({page: 1}, {limit: 10)
  .exec(function(err, results) {
    if(err) {
      res.badRequest('reason');
    }
    res.json(results);
});

答案 1 :(得分:0)

试试这个,

ViewGame: function (req, res) {
    var GetName;
    Games.findBySlug(req.params.tournamentName).exec(function(err, results) { 
    GetName = results[0].name;
    res.view('game/view', {
        name : GetName,
    });
 });        
},

您必须了解Javascript回调的工作原理。

在您的代码函数中,在调用ViewGame函数后,按以下顺序执行:

  1. Games.findBySlug(req.params.tournamentName).exec()函数调用后续调用以下回调函数。

    function(err, results) { 
         GetName = results[0].name;
    });
    
  2. 调用以下函数。

    res.view('game/view', {
        name : GetName,
    });
    
  3. 调用以下功能(在第1步安排)。

    function(err, results) { 
        GetName = results[0].name;
    });
    
  4. 由于在" res.view"中设置了GetName,因此未分配(在第3步中进行分配)。在第二步。但是当你使用" console.log"它只是打印"结果[0] .name"的值。在第3步。