我正在尝试使用 MERN 堆栈构建应用程序, 这是我的元素模型:
const Item = require("../../models/Item");
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
//Create Schema
const ItemSchema = new Schema({
name: {
type: String,
required: true
},
createdAt: {
type: Date,
default: Date.now
},
handler:{
type:String,
required:true
}
});
module.exports = Item = mongoose.model("item", ItemSchema);
使用 mongoose objectId 删除函数:
router.delete("/:id", auth, (req, res) => {
var id = mongoose.Schema.Types.ObjectId(req.params.id);
Item.deleteOne({ _id: id})
.then(() => {
console.log(id);
res.json({ success: true });
})
.catch(err => {
console.log(err);
res.status(404).json({ success: false });
});
});
console.log(id)的结果是:
undefined
我尝试了不同的版本,例如使用 Mongodb ObjectId
const ObjectID = require("mongodb").ObjectId;
router.delete("/:id", auth, (req, res) => {
var id = ObjectID(req.params.id).toString();
Item.deleteOne({ _id: id})
.then(() => {
console.log(id);
这个console.log(id)给出:
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
我console.log(req.params)和结果:
params: { id: '[object Object]' }
如何正确检索 id 以从 Mongodb 数据库中删除该项目?我在 React 中的操作文件是这样的:
export const deleteItem = itemId => dispatch => {
dispatch({ type: LOADING_ITEMS });
axios
.delete(`http://localhost:5000/api/items/${itemId}`)
.then(res => {
console.log(itemId)
dispatch({
type: DELETE_ITEM,
payload: itemId
});
})
.catch(err => console.log(err));
最佳答案
您没有提供有效的 Mongoose 对象 ID。
const express = require("express");
const mongoose = require("mongoose");
const app = express();
const port = 3000;
app.delete("/:id", (req, res) => {
if (!mongoose.Types.ObjectId.isValid(req.params.id)) {
return res.send("Please provide valid id");
}
var id = mongoose.Types.ObjectId(req.params.id);
console.log(id);
return res.send("Hello World!");
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
以下是curl 请求:
curl -X DELETE http://localhost:3000/1 # Please provide valid id
curl -X DELETE http://localhost:3000/4edd40c86762e0fb12000003 # Hello World!
关于javascript - Mongodb - Express,如何正确获取 "id"?它给出一个空的 [Object, Object],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58900823/