我正在制作一个刷新数据' Node中的函数,我无法弄清楚回调和返回的位置。该功能继续运行。下面列出了该功能应该做的事情。有人可以帮忙吗?
./路由/ index.js
router.post('/refresh', function(req, res) {
var refresh = require('../api/refresh');
refresh(req, function() { return console.log('Done'); });
});
../ API / refresh.js
var callToken = require('./calltoken');
var User = require('../models/user'); // Mongoose Schema
module.exports = function(req, callback) {
User.findOne( {'username':req.body.username}, function(err, user) {
if(err) { console.log(err) }
if (user.api_id == 0) {
callToken.postToken(req.body.username, callback);
} else { // Do something else }
});
};
./ calltoken.js
var request = require('request');
var Token = require('../models/token'); // Mongoose Schema
module.exports = {
postToken: function(user, callback) {
var send = {method:'POST', url:'address', formData:{name:user} };
request(send, function(err, res, body) {
if(err) { console.log(err) }
if (res.statusCode == 201) {
var newToken = new Token();
newToken.token = JSON.parse(body).access_token['token'];
newToken.save(function(err) {
if(err) { console.log(err) }
return callback();
});
}
});
}
};
答案 0 :(得分:0)
我不是Express的专家,但你在if(err) { console.log(err) }
行代码中的任何地方你应该停止执行(当然可能不是 - 取决于你的应用程序)并将400或500返回给客户端。所以它可能像
if(err) {
console.log(err);
return callback(err); // NOTICE return here
}
成功执行后,您应致电return callback(null, result)
。注意null为第一个参数 - 它是根据nodejs约定(错误总是作为第一个参数)。