gpt4 book ai didi

javascript - Node.js 服务器 waterfall 错误 TypeError : Cannot read property 'Symbol(Symbol.toStringTag)' of undefined

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:16 25 4
gpt4 key购买 nike

我正在编写一个具有两个函数的服务器,一个函数使用另一个函数的输出。服务器运行时报错:

TypeError: Cannot read property 'Symbol(Symbol.toStringTag)' of undefined
at isAsync (/Users/charles/Documents/Router/node_modules/async/dist/async.js:228:32)
at wrapAsync (/Users/charles/Documents/Router/node_modules/async/dist/async.js:232:12)
at nextTask (/Users/charles/Documents/Router/node_modules/async/dist/async.js:5308:20)
at Object.waterfall (/Users/charles/Documents/Router/node_modules/async/dist/async.js:5320:5)
at /Users/charles/Documents/Router/routes/yelp.js:46:15
at /Users/charles/Documents/Router/node_modules/mongojs/lib/cursor.js:59:24
at handleCallback (/Users/charles/Documents/Router/node_modules/mongojs/node_modules/mongodb/lib/utils.js:120:56)
at /Users/charles/Documents/Router/node_modules/mongojs/node_modules/mongodb/lib/cursor.js:683:5
at handleCallback (/Users/charles/Documents/Router/node_modules/mongojs/node_modules/mongodb-core/lib/cursor.js:171:5)
at setCursorDeadAndNotified (/Users/charles/Documents/Router/node_modules/mongojs/node_modules/mongodb-core/lib/cursor.js:505:3)

代码是

const express = require('express');
const router = express.Router();

const request = require('request-promise-lite');
const async = require('async');

router.get('/yelp', function(req, res, next) {
db.input.find({}, {
term: 1,
location: 1,
_id: 0
})
.limit(1).sort({
$natural: -1
}, function(err, input) {
if (err) {
res.send(err)
}

console.log(input);
async.waterfall([yelpSearch(input[0]), googleSearch],
function sendJson(err, restaurants) {
console.log("waterfall starting");
if (err) res.send(err);
res.json(restaurants);
})
})
});

// Yelp API call
const yelpSearch = function(input, cb) {
const client = yelp.client(apiKey);
client.search(input)
.then(response => {
console.log(response.jsonBody.businesses);
cb(null, response.jsonBody.businesses);
})
.catch(e => {
console.log(e);
});
}

// Google API call
const googleSearch = function(restaurants, cb) {
console.log("google starts")
var apiKey = google_apiKey;
var cseKey = cseID;
restaurants.forEach(function(restaurant) {
var keyWord = restaurant.name + restaurant.city + restaurant.state;

var googleURL = "https://www.googleapis.com/customsearch/v1?key=" + apiKey +
"q=" + keyWord +
"&searchType=image" +
"&cx" + cseKey +
"&count=5" +
"&safe=medium";

var imageURLs = [];
request.get(googleURL, {
json: true,
headers: {
'User-Agent': 'thaorell'
}
}).then(function(response) {
response.items.forEach(function(item) {
imageURLs.append(item.link)
});

restaurant.append(imageURLs);
console.log(imageURLs);
})
})
cb(null, restaurants)
};

有人有这方面的经验吗?错误在于:async.waterfall([yelpSearch(input[0]), googleSearch]。我正在使用 Yelp API 搜索餐厅,然后对于每个餐厅,我想获取Google 搜索该餐厅的图片。

最佳答案

我猜,您错误地将参数传递给 waterfall 中的第一个函数,它应该是:

async.waterfall([
async.constant(input[0]),
yelpSearch,
googleSearch
], function sendJson(err, restaurants) {
// ...
});

关于javascript - Node.js 服务器 waterfall 错误 TypeError : Cannot read property 'Symbol(Symbol.toStringTag)' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49973919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com