2016-08-04 126 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 
});