Javascript 为什么没有定义ID?

Javascript 为什么没有定义ID?,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,当我发送删除请求时,收到消息错误 ReferenceError:未定义id 在Object.removeOne(…\services\user.js:16:38 我不知道\services\user.js中的id是什么,为什么没有定义它 /generalRepository.js function Repository() {} Repository.prototype.findAndRemoveById = findAndRemoveById; function findAndRemoveB

当我发送删除请求时,收到消息错误
ReferenceError:未定义id
在Object.removeOne(…\services\user.js:16:38

我不知道\services\user.js中的id是什么,为什么没有定义它

/generalRepository.js

function Repository() {}
Repository.prototype.findAndRemoveById = findAndRemoveById;

function findAndRemoveById(id, callback) {
  var model = this.model;
  var query = model.deleteOne({
    _id: id
  });
  query.exec(callback);
}

module.exports = Repository;
const router = require("express").Router();
const userService = require("../../services/user");

router.delete("/:id", (req, res, next) => {
  userService.removeOne(String(req.params.id), (err, data) => {
    if (!err) {
      res.send('success delete query');
    } else {
      console.log("wrong delete query");
      res.status(400);
      res.end();
    }
  });
});

module.exports = router;
const UserRepository = require("../repositories/UserRepository");

module.exports = {
  removeOne: () => {
    UserRepository.findAndRemoveById(id, (err, data) => {
      callback(err, data);
    });
  }
};
.routers/user.js

function Repository() {}
Repository.prototype.findAndRemoveById = findAndRemoveById;

function findAndRemoveById(id, callback) {
  var model = this.model;
  var query = model.deleteOne({
    _id: id
  });
  query.exec(callback);
}

module.exports = Repository;
const router = require("express").Router();
const userService = require("../../services/user");

router.delete("/:id", (req, res, next) => {
  userService.removeOne(String(req.params.id), (err, data) => {
    if (!err) {
      res.send('success delete query');
    } else {
      console.log("wrong delete query");
      res.status(400);
      res.end();
    }
  });
});

module.exports = router;
const UserRepository = require("../repositories/UserRepository");

module.exports = {
  removeOne: () => {
    UserRepository.findAndRemoveById(id, (err, data) => {
      callback(err, data);
    });
  }
};
.services/user.js

function Repository() {}
Repository.prototype.findAndRemoveById = findAndRemoveById;

function findAndRemoveById(id, callback) {
  var model = this.model;
  var query = model.deleteOne({
    _id: id
  });
  query.exec(callback);
}

module.exports = Repository;
const router = require("express").Router();
const userService = require("../../services/user");

router.delete("/:id", (req, res, next) => {
  userService.removeOne(String(req.params.id), (err, data) => {
    if (!err) {
      res.send('success delete query');
    } else {
      console.log("wrong delete query");
      res.status(400);
      res.end();
    }
  });
});

module.exports = router;
const UserRepository = require("../repositories/UserRepository");

module.exports = {
  removeOne: () => {
    UserRepository.findAndRemoveById(id, (err, data) => {
      callback(err, data);
    });
  }
};

您需要将
removeOne
函数更新为follow,方法是在调用该函数时需要传递参数(
id
callback

const UserRepository = require("../repositories/UserRepository");

module.exports = {
  removeOne: (id, callback) => {
    UserRepository.findAndRemoveById(id, (err, data) => {
      callback(err, data);
    });
  }
};

也许你应该这样:

module.exports = {
  removeOne: (id) => {
    UserRepository.findAndRemoveById(id, (err, data) => {
     callback(err, data);
    });
  }
};

removeOne
应将
id
作为参数,该参数最终将传递给
findDemoveById
您需要UserRepository,但您已在generalRepository.js中定义了FindDemoveById