我很难让couchdb的响应处理程序对node.js和now.js做任何有用的事情。我的目的是回复客户或团体,其中包含已找到并且也从客户发送的某些信息。
everyone.now.login = function(){
var username = this.now.lusername;
var password = this.now.lpassword;
var test;
db.get(this.now.lusername, function (err, doc, test, username) {
if (err) {
console.log(+ username + " doesn't exist!");
} else {
console.log('Found user!');
console.log(doc);
test = 1;
}
});
console.log(test);
}
我在这里以测试为例。我在db.get之外声明它,在里面分配一个值来反馈,但是当在外面运行console.log时它没有值。
我只是没有得到它或者出了什么问题?
(我确实发布了我可以使用doc。(无论什么价值)但是有一个特殊的变量我希望在此次调用之外传递回客户端)
答案 0 :(得分:2)
test
变量在console.log
中没有值,因为CouchDB响应尚未到达。您的登录功能执行以下步骤。
username
,password
和test
未定义)this.now.lusername
),并指定在完成时运行的功能console.log(test)
我为这样的事情做的是使用函数调用。
everyone.now.login = function(){
var username = this.now.lusername;
var password = this.now.lpassword;
db.get(this.now.lusername, function (err, doc, test, username) {
if (err) {
console.log(+ username + " doesn't exist!");
} else {
console.log('Found user!');
console.log(doc);
login_complete(doc);
}
});
function login_complete(doc) {
console.log('The login finished! Doc is ' + doc)
}
}
这样代码仍然看起来正确(代码的“故事”主要从上到下流动),但它也正确执行({{1函数仅在登录实际完成后运行。)