gpt4 book ai didi

node.js - 在路由文件之外使用 res.send()

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:00 24 4
gpt4 key购买 nike

我对 Node JS 和 Express 非常陌生,所以如果这个问题到处都是,我深表歉意。

在我的 route ,我在单独的模块中调用一个函数:

var express = require('express');
var router = express.Router();
var imgur = require('../helpers/imgur.js');

router.get('/imagesearch/:query', function(req, res) {

imgur.search('cats', '2');

});

module.exports = router;

Imgur 帮助程序文件当前如下所示:

const https = require('https');

module.exports = {
search : function(query, pagination) {
var options = {
host: 'api.imgur.com',
path: '/3/gallery/search/hot/' + pagination + '?q=' + query,
port: 443,
method: 'GET',
headers: {'Authorization' : 'Client-ID ' + process.env.API_KEY}
};

var callback = function(res) {
var str = '';

res.on('data', function(chunk) {
str += chunk;
});

res.on('end', function() {
var result = JSON.parse(str);
result = result.data;

var finalResult = [];

for(var key in result) {
url = result[key].link;
title = result[key].title;
points = result[key].points;

var temp = {url: url, title: title, points: points};

finalResult.push(temp);
}

return finalResult;
});
};

var req = https.request(options, callback);

req.end();

req.on('error', function(e) {
console.error(e);
});
}
};

目的是将 FinalResult 变量转换为 JSON 并通过 res.send 提供服务,就像 API 一样。

正如您所看到的,我尝试从函数返回数据,但我认为这与 Node 的工作方式不太一致。我尝试过使用 res.send 甚至 res.render,但这两个都返回“X 不是函数”。

我知道我需要以某种方式使用回调,但此时我完全迷失了。

最佳答案

res 对象传递到您的 search 函数中,然后您可以从该函数中调用 res.send()

将其声明为参数:

search : function(res, query, pagination) {

传入:

router.get('/imagesearch/:query', function(req, res) {
imgur.search(res, 'cats', '2');
});

然后,在 search 函数的实现中,您可以在任意位置调用 res.send(...)

<小时/>

或者,您可以让 search 函数返回一个 promise ,当您获得异步结果时,您将使用结果解析该 promise ,然后您的路由器可以使用该 promise 来获取结果。

关于node.js - 在路由文件之外使用 res.send(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40812399/

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