get data from async function

i’m trying to do a little website like sickgearr for my seedbox :
i want a search form which will send a search query to my torrent providers using this api :

i managed getting text from the form, making the api calls and get results printed in the console.

but when i try to pass them to the soon to-become result page, i’m only passing promises and i don’t quite understand the principle of promises.

If someone could help me resolve my issues i’d be really really gratefull or atleast give me some hints !

Here is my code made up from several ejs, nodejs begginers tutorials :

const express = require('express');
const bodyParser = require('body-parser');
const app = express()
const TorrentSearchApi = require('torrent-search-api');
const tableify = require('tableify');
TorrentSearchApi.enableProvider('Yggtorrent','Login', 'Password');

app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs')

async function search(query){ // Search for torrents using the api

var string = query.toLowerCase();
const torrents = await,'All',20); // Search for legal linux distros 

app.get('/', function (req, res) {
})'/', function (req, res) {
var rawTorrent = search(req.body.torrent);
var page = tableify(rawTorrent); //printing rawtorrent will only give me "promise"

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Your search function is using async/await.
It means the search function is asynchrone and returns a Promise.
You should await its result (line 23).

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const TorrentSearchApi = require('torrent-search-api')
const tableify = require('tableify')

TorrentSearchApi.enableProvider('Yggtorrent','Login', 'Password')

app.use(bodyParser.urlencoded({ extended: true }))
app.set('view engine', 'ejs')

const search = async query => {
  const loweredQuery = query.toLowerCase()
  const torrents = await, 'All', 20)
  return JSON.stringify(torrents)

app.get('/', (_, res) => res.render('index'))'/', async (req, res) => {
  const torrents = await search(req.body.torrent) // Right here
  const htmlTable = tableify(torrents)
  res.render('results', htmlTable)

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x