如何在Node.js中从子函数return值到父函数?
How to return value from child function to parent function in Node.js?
我想要一个从子函数到 Node.js
中的父函数的值,并在另一个文件中使用该值。作为异步流,d.promise
的输出待定。
如何在 site.js
文件的 queryCheck
变量中获取在 arangoFunction.js
文件中传递的数据所满足的 d.promise
的值?
使用的数据库: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' }
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
});
我想要一个从子函数到 Node.js
中的父函数的值,并在另一个文件中使用该值。作为异步流,d.promise
的输出待定。
如何在 site.js
文件的 queryCheck
变量中获取在 arangoFunction.js
文件中传递的数据所满足的 d.promise
的值?
使用的数据库: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' }
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
});