我想要一个从子函数到Node.js
中父函数的值,并在另一个文件中使用该值。作为异步流,d.promise
的输出正在等待
如何通过d.promise
文件中arangoFunction.js
变量中queryCheck
文件中传递的数据获得site.js
的值?
使用的数据库:ArangoDB
site.js代码段
var arangoFunc = require('./arangoFunction'), queryCheck;
queryCheck = arangoFunc.saveData(data, roleCollection, res);
console.log(queryCheck);
arangoFunction.js片段
var q = require('q');
var d = q.defer();
exports.saveData = function(data, collectionName, res){
var collectionData = db.collection(collectionName);
collectionData.save(data, function(e, o){
if(e) {
console.error(e);
res.status(e.response.statusCode).send(e.response.statusMessage);
d.reject(false);
}
else {
res.send(data);
d.resolve(data);
}
});
return d.promise;
}
输出site.js代码段
{ state: 'pending' }
答案 0 :(得分:1)
arangoFunction.js
exports.saveData = function(data, collectionName, res){
var collectionData = db.collection(collectionName);
return q.Promise(function(resolve, reject, notify){
collectionData.save(data, function(e, o){
if(e) {
console.error(e.response.statusMessage);
res.status(e.response.statusCode).send(e.response.statusMessage);
reject(e);
}
else {
res.send(data);
resolve(data);
}
});
});
}
site.js
arangoFunc.saveData(data, roleCollection, res).then(function(value){
// do whatever with the returned data
}, function(err){
// error handling
});