1. ホーム
  2. node.js

[解決済み] JSHintは識別子を期待し、その代わりに関数を見た。

2022-02-11 05:38:24

質問

Redisに問い合わせを行い、redisにデータが見つからない場合はSQLデータベースに問い合わせを行う関数を宣言しました。以下は私のコードですが、最初の行自体でエラーが発生します。私はなぜ引数として関数が問題を引き起こしているのかよくわかりません。

function redusId(taskId, function (err, reply){
var status = taskId + ".status";
var response = taskId + ".response";
var jsonObject = {};

redisClient.get(status, function (error, reply) {
    if (error) {
        console.log("redis.status.ERROR: " + error);
        return;
    }

    if (!reply) {
        checkSQLdb(taskId, function (error, data) {
            if(error) {
                console.log("sql.ERROR", error);
            }

            if(!data) {
                console.log("sql.status.ERROR");
            }
            else {
                // data retrieval and posting in redis and calling redis client again
                var id = data[0].id;
                var status = data[0].status;
                var response = data[0].response;
                console.log(id, status, response);
                var requestid = id + ".status";
                redisClient.set(requestid, status);
                requestid = id + ".response";
                redisClient.set(requestid, response);
                redusId(id);
            }
        })
      }
    else {
        jsonObject."status" = reply;

        if (reply == 1) {
                //redis returns non one status no response is expected
                redisClient.get(response, function(error, reply) {
                    if (error) {
                        //redis has the status but not the response
                        console.log("redis.response.ERROR ", error);
                    }
                    else {
                        jsonObject."response" = response;
                        return jsonObject;
                    }
                });
             }
             else {
                console.log("status is not one ; no response is expected");
                return jsonObject;
             }
        }
    })
});

解決方法は?

これはコメントで指摘されていたのですが、誰も回答として投稿していなかったので、今投稿します。

コードスニペットの問題は、関数を宣言して、それを引数として渡そうとしていたことです。与えられたコード・スニペットでは、正しいやり方は

    function redusId(taskId,callback){...}

として呼び出し、それを

    redusId(1, function(){...});