首页 > 解决方案 > 如果不是英文结果,我怎样才能让它重新启动?

问题描述

我在https://dev-qaboomapi.azurewebsites.net/randmovie有一个 API 。我有一个 txt 文件,其中列出了来自https://themoviedb.org的所有电影 ID ,其中一个是随机选择的,信息显示在上面的 API 地址中。我无法解决的是如何让它检查结果是否是一部英语电影,如果不是,然后再试一次。

我有一个 If Else 语句,它检查结果是一部英语电影,但我无法确定它是否不是如何重新开始该过程。

var appRouter = function (app) {
    app.get("/randMovie", function (req, res) {
        const fetchURL = require('fetch').fetchUrl;
        const fs = require('fs');

        const data = fs.readFileSync('./db/MovieIDs.txt') + '';
        const splitData = data.split('\n');
        const randomNumber = Math.floor(Math.random() * splitData.length);
        const line = splitData.splice(randomNumber, 1);
        const lineDATA = line.toString()

        const api = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
        var movieID = lineDATA
        var URL = 'https://api.themoviedb.org/3/movie/' + movieID + '?api_key=' + api + "&append_to_response=videos"

        fetchURL(URL, function(error, meta, body){
            var movieString = body.toString()
            var movieJSON = JSON.parse(movieString)

            if(movieJSON.original_language == "en") {
                res.status(200).send(movieJSON);
            } else {
                // Not sure what to put here
            }
        })
    });
}
module.exports = appRouter;

我希望它仅在以下情况下返回电影的详细信息:

if(movieJSON.original_language == "en")

并在不是时重试。

标签: node.jsexpress

解决方案


这是您可以尝试的方法,但如果结果不是英文,请确保该函数不会无限运行。

var appRouter = function (app) {
app.get("/randMovie", function (req, res) {
   retrieveData(req, res);
}

的定义retrieveData

retrieveData(req, res){
        const fetchURL = require('fetch').fetchUrl;
        const fs = require('fs');

        const data = fs.readFileSync('./db/MovieIDs.txt') + '';
        const splitData = data.split('\n');
        const randomNumber = Math.floor(Math.random() * splitData.length);
        const line = splitData.splice(randomNumber, 1);
        const lineDATA = line.toString()

        const api = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
        var movieID = lineDATA
        var URL = 'https://api.themoviedb.org/3/movie/' + movieID + '?api_key=' + api + "&append_to_response=videos"

        fetchURL(URL, function(error, meta, body){
            var movieString = body.toString()
            var movieJSON = JSON.parse(movieString)

            if(movieJSON.original_language == "en") {
                res.status(200).send(movieJSON);
            } else {
                // Not sure what to put here
                retrieveData(req, res);
            }
        })
}

推荐阅读