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