对于我的项目,我有一个server.js,它调用一个辅助函数place-search.js,如下所示。如何从辅助函数返回值到server.js NodeJS
var express = require('express');
var server = express.Router();
var placeSearch = require("./helpers/place-search");
var obj = "hello";
server.use(function(req, res, next) {
\t console.log(req.method, req.url);
\t next();
});
server.post('/', function(req, res) {
\t /* get the object passed by the client's post request */
\t obj = req.body;
\t //console.log("Obj: " + obj);
\t /* send the confirmation back to the client */
\t res.status(200).send("body");
\t placeSearch.placeSearch(obj);
});
module.exports.server = server;
这里是我的地方,search.js:
var config = require("./config.js");
var Promise = require('bluebird');
var DistanceMatrix = require("./distance-matrix.js");
var GooglePlaces = Promise.promisifyAll(require("googleplaces"));
var googlePlaces = new GooglePlaces(config.apiKey, config.outputFormat);
var extract = require('./extract.js');
var combination = require('./combination_ver2.js');
var permutation = require('./permutation.js');
function placeSearch(obj) {
console.log("Inside place search!");
/**
* Place search - https://developers.google.com/places/documentation/#PlaceSearchRequests
*/
var arr = [];
var count = 0;
var rad = obj["radius"];
console.log("radius: " + rad);
var loc = obj["location"];
console.log("Location: " + loc);
var mode = obj["mode"];
var params = obj["params"];
/* client's keywords */
var arr;
var ar = [];
for (var i = 0; i < params; i++) {
arr[i] = obj[i];
console.log(arr[i]);
var param = {
location: loc,
radius: rad,
mode: mode,
keyword: arr[i]
};
ar.push(param);
}
console.log("before promises");
var promises = ar.map(function(name) {
return googlePlaces.placeSearch(name, function(response) {
arr.push(response);
console.log(response);
console.log(count++);
//If all responses have been returned
//Find combos and pass to distance-matrix
if (count == ar.length) {
var Matrix = new Array();
var result = new Array();
//to extract only lat and lng from arr.results
//Matrix = extract.extract(arr);
result = combination.combination(arr);
// NOW RESULT IS THE ARRAY OF ALL COMBINATION
// NOW RESULT IS THE ARRAY OF COMBINATIONS OF latlng pairs AND PASS IT TO FRONTEND
/*result.forEach(function(combo, index) {
console.log("combo" + combo)
DistanceMatrix.distanceMatrix(mode, combo, result.length);
});*/
// IF YOU WANT TO SEE PERMUTATION
//permutation.permutation(result);
console.log("combination results: " + result);
}
})
});
}
module.exports.placeSearch = placeSearch;
我的问题是我不知道怎么的结果变量传回server.js,以便我可以使用该结果作为另一个辅助函数的输入。我不能为我的生活弄清楚如何做到这一点。任何帮助都将不胜感激。
呀,尽管使用'VAR承诺=',它看起来没有什么实际上是一个承诺。 – Paul 2014-11-20 19:47:15
我假设'googlePlaces.placeSearch'返回了一个承诺。 – 2014-11-20 20:35:11
如果他使用的是npm模块,请不要使用它.https://www.npmjs.org/package/googleplaces – Paul 2014-11-20 21:18:30