2016-08-04 124 views
0

我想要一个Node.js中的父子函数的子函数值,并在另一个文件中使用该值。异步流程d.promise的输出正在等待处理。
如何获得d.promise的值与site.js文件中的queryCheck变量中的arangoFunction.js文件中传递的数据一致?如何在Node.js中将子函数的值返回父函数?

数据库使用:ArangoDB

site.js片断

var arangoFunc = require('./arangoFunction'), queryCheck; 
queryCheck = arangoFunc.saveData(data, roleCollection, res); 
console.log(queryCheck); 

arangoFunction.js片断site.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; 
     } 

输出代码段

{ state: 'pending' } 

回答

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 
});