1

我已经开始nodejs在其中制作一个简单的聊天应用程序。为此,我想访问mysql database.

我的代码是这样的:

JS

exports.authenticate = function(req, res) {

    //connection.connect();
    var sql="SELECT * from users where username='"+req.body.user+"' and password='"+req.body.pass+"' LIMIT 1";
    connection.query(sql, function(err, rows, fields) {
        if (err) throw err;

        //res.send('Your data is: ', rows);
        var str="Hi, <b>"+rows[0].name+"</b> ("+rows[0].email+")";

        sql="SELECT DISTINCT username,name from users ORDER BY name";
        connection.query(sql, function(err, datarows, fields) {
            if (err) throw err;
            //res.send('Your data is: ', rows+' <br/> All Users are : ', datarows.length+"<a href='/'>Login</a>");
            str+='<ul style="list-style:none;width:300px">';
            for(var index=0;index<datarows.length;index++)
            {
                str+="<li><a href='javascript:;'>"+datarows[index].name+", "+datarows[index].email+"</a></li>";
            }
            str+='</ul>';console.log(str);  
            console.log(str)//gives ul  
        });

        str+="<a href='/'>Login</a>";
        res.send(str);//this not gives the ul of other users
    });

}

上面的代码有问题,我写console.log(str)//gives ul的这个打印整个字符串就像Hi, <b>Rohan</b> ("rohan@xyz.com")<ul><li><a>Something</a></li>....</ul>. 但res.send(str);只发Hi, <b>Rohan</b> ("rohan@xyz.com")<a href='/'>Login</a>

  1. 为什么会这样?
  2. 我的str variable不是global吗?
  3. 我可以res.send()多次使用,如果可以,那么如何使用?

我可以使用上面的代码,jade然后我应该为此编写什么代码

我找到了这个答案How to pass data form mongodb (using Mongous module) into nodejs view (using temp engine jam)? 与我的问题有关

app.get('/', function(req, res) {
  mgs(dbColl).find(function(data){
    res.render('yourview.jade', { data: data });
  });
});

那么,如何访问中的数据yourview.jade

我也想知道我们应该为哪种类型的应用程序使用 nodejs ?

预先感谢。

4

1 回答 1

0
  1. 这是因为 Node 是异步的。你res.send(str)在调用你的 inner 后立即执行connection.query(),因此添加更多的回调在发送之前没有执行。
  2. 不,您的 str 变量不是全局的。
  3. 我不相信。如果您想在发送之前写入响应,您可以使用res.write().

是的,您可以使用 Jade 代替您现在正在做的事情。查看Jade 文档。它们充满了翡翠中使用的变量的例子。不过,为您总结一下,您应该能够使用#{variable}.

至于你的最后一个问题,我真的不知道你在问什么。你可以使用 node 做很多事情,从控制四轴飞行器网站和服务

于 2013-03-08T06:29:08.690 回答