NodeJS服务功能未定义

时间:2020-02-29 13:43:07

标签: node.js promise

我完全是nodejs的新手。尝试在一个服务中读取json文件,然后在其他服务中使用它。 它告诉我我的服务未定义。我究竟做错了什么 ? 预先感谢!

JsonService

'use strict';

const fs = require('fs');
exports.getJobs = ()=> {
    fs.readFile('./common/data/jobs.json', (err, data) => {

        if (err) throw err;

        if (data) {
            return new Promise(function (resolve, reject) {
                resolve(data);
            });
        }
    });
}

和JobsService

const JsonService = require('../../common/services/json.service');



exports.list = () => {
    let jobs;
    JsonService.getJobs().then((data)=>{
       jobs = data;
        return new Promise((resolve, reject) => {
            if(jobs){
                resolve(jobs);
            }else{
                reject(jobs)
            }
        });
   });


};

1 个答案:

答案 0 :(得分:3)

如果您只需要读取json文件,则只需完成

const jobs = require("./common/data/jobs.json");

希望这会有所帮助。

由于试图将其用作Promise但getJobs没有返回Promise之所以无法运行代码的原因。您需要将其包装在promise中,然后返回。这就是方法

const fs = require("fs");
exports.getJobs = () => {
  return new Promise((resolve, reject) => {
    fs.readFile("./common/data/jobs.json", (err, data) => {
      if (err) {
        reject(err);
      }
      if (data) {
        resolve(data);
      }
    });
  });
};

并像这样使用它

const JsonService = require("../../common/services/json.service");


exports.list = () => {
  let jobs;
  JsonService.getJobs().then(data => {
    console.log(data);
  });
};

无需在此处将其包装在promise中。

但是在您的情况下,仅需要按我上面提到的那样工作即可。