CNode

使用MySQL求助!

Kkriswu发布于14 年前最后回复14 年前4 回复4518 浏览0 收藏

app.js中代码如下

app.locals({
categorys: dao_base.queryAllcategory(function(err, categorys) {})
});

dao_base代码如下

exports.queryAllcategory = function(callback){
mysql.query('select * from cb_category order by seq',function(err, categorys){
    callback(err, categorys);
});
};

jade页面代码如下

#{categorys.length}

然后运行 提示错误

  > 1|   #{categorys.length}
Cannot read property 'length' of undefined

这是为什么啊?

查看回复

回复 (4)

J
javanode#1·14 年前

mysql没有连接上,看下配置端口用户名密码之类的 https://github.com/ChunMengLu/node_mysql_test 这是我之前的一个mysql的demo

M
mytharcher#3·14 年前

你这写法有很大的问题啊,用你这么写的回调是无法给属性赋值的。你调用dao_base.queryAllcategory这个函数,但是你期待的结果是在异步过程中,所以这个函数的返回值肯定是undefined。你只能在异步的回调中去给app.locals赋值。

有时间你先搞明白JS的函数回调和node的异步吧。

K
kriswu#4·14 年前
引用 mytharcher你这写法有很大的问题啊,用你这么写的回调是无法给属性赋值的。你调用dao base.queryAllcategory这个函数,但是你期待的结果是在异步过程中,所以这个函数的返回值肯定是unde...

嗯,谢谢。我后来已经想明白了,在函数中是可以得到数据的,不过因为异步的原因 app.locals中得不到数据。现在已经换了一个思路来实现了。

参与回复
登录后即可参与回复。登录