将来自 POST 请求的 ID 传递到单独的端点
Pass IDs from POST request to separate endpoint
我正在自学 Nodejs,并尝试用 Yelp 的 API 附近企业的营业时间和营业时间列表填充一个页面。我在 Express 中创建了到我页面的 POST 路由,使用 Yelp Fusion 客户端调用 Yelp API。我能够收集一个必须在另一个端点中使用的 id 数组以获取操作时间,但是尽管在请求中设置了限制,但在执行此操作时我仍然收到 TOO_MANY_REQUESTS_PER_SECOND
错误。
Server.js
var express = require("express");
var app = express();
var yelp = require("yelp-fusion");
var bodyParser = require("body-parser");
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({extended: true}));
app.set("view engine", "ejs");
let client = yelp.client("API_HIDDEN");
app.get("/", function(req,res){
res.render("landing");
});
///Initial request made to obtain business ids
app.post("/", function(req, res){
client.search({
term: 'cafe',
location: 'Oakland',
limit: 20
}).then(response => {
var ids = [];
var businesses = response.jsonBody.businesses;
var idName = businesses.map(el => {
ids.push(el.id);
});
// request separate endpoint, passing ids from the ```ids```array
for(var x = 0; x < businesses.length; x++){
client.business(ids[x]).then(response => {
console.log(response.jsonBody.hours);
})}.
res.render("search");
}).catch(e => {
console.log(e);
});
})
app.listen(3000);
我曾尝试在 for 循环内外调用 client.businesses[id]
,但这也导致了错误。我对此行为感到困惑,因为我只进行了 20 次调用,远低于最小值,而且如果不是数组,我也不知道如何传递 ID,因为我没有 运行 的想法。预先感谢您的帮助。
随着时间的推移分散 api 电话。
var delay = 1.1 * 1000; // 1.1 seconds in milliseconds
for(var x = 0; x < businesses.length; x++){
setTimeout(function(i){
client.business(ids[i]).then(response => {
console.log(response.jsonBody.hours);
});
},delay*x,x);
}
我正在自学 Nodejs,并尝试用 Yelp 的 API 附近企业的营业时间和营业时间列表填充一个页面。我在 Express 中创建了到我页面的 POST 路由,使用 Yelp Fusion 客户端调用 Yelp API。我能够收集一个必须在另一个端点中使用的 id 数组以获取操作时间,但是尽管在请求中设置了限制,但在执行此操作时我仍然收到 TOO_MANY_REQUESTS_PER_SECOND
错误。
Server.js
var express = require("express");
var app = express();
var yelp = require("yelp-fusion");
var bodyParser = require("body-parser");
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({extended: true}));
app.set("view engine", "ejs");
let client = yelp.client("API_HIDDEN");
app.get("/", function(req,res){
res.render("landing");
});
///Initial request made to obtain business ids
app.post("/", function(req, res){
client.search({
term: 'cafe',
location: 'Oakland',
limit: 20
}).then(response => {
var ids = [];
var businesses = response.jsonBody.businesses;
var idName = businesses.map(el => {
ids.push(el.id);
});
// request separate endpoint, passing ids from the ```ids```array
for(var x = 0; x < businesses.length; x++){
client.business(ids[x]).then(response => {
console.log(response.jsonBody.hours);
})}.
res.render("search");
}).catch(e => {
console.log(e);
});
})
app.listen(3000);
我曾尝试在 for 循环内外调用 client.businesses[id]
,但这也导致了错误。我对此行为感到困惑,因为我只进行了 20 次调用,远低于最小值,而且如果不是数组,我也不知道如何传递 ID,因为我没有 运行 的想法。预先感谢您的帮助。
随着时间的推移分散 api 电话。
var delay = 1.1 * 1000; // 1.1 seconds in milliseconds
for(var x = 0; x < businesses.length; x++){
setTimeout(function(i){
client.business(ids[i]).then(response => {
console.log(response.jsonBody.hours);
});
},delay*x,x);
}