javascript - mongoose findOne() 函数未返回指定的项目
问题描述
我正在尝试在 javascript 中使用 mongoose 获取单个项目,但无法使其正常工作。该项目在我的数据库中名为“名称”,当我将 .get 与 /products 一起使用时,它可以正常工作。我所有获得所有项目的方法都很好,我只是在处理单个项目时遇到了麻烦。任何帮助是极大的赞赏。谢谢!
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require("mongoose");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
extend: true
}));
app.use(express.static("public"));
mongoose.connect("mongodb://localhost:27017/ShoppingCartDB", {useNewUrlParser: true});
const productSchema = {
name: String,
price: String,
quantity: Int
};
const Products = mongoose.model("Products", productSchema);
//sets route to all items in products database
app.route("/products")
//gets ALL items in cart
.get(function (req, res) {
Products.find(function(err, foundProducts) {
console.log(foundProducts);
if (!err) {
res.send(foundProducts);
} else {
res.send(err);
}
});
})
//deletes ALL items in cart
.delete(function(req, res) {
Products.deleteMany(function(err) {
if (!err) {
res.send("All products removed from shopping cart");
} else {
res.send(err);
}
})
});
//changes route to single item based on name
app.route("/products/:itemName")
.get(function(req, res) {
Products.findOne({name: req.params.itemName}, function(err, foundItem){
if (foundItem) {
res.send(foundItem);
} else {
res.send(err);
}
});
})
.delete(function(req, res) {
Products.deleteOne(
{name: req.params.itemName},function(err) {
if (!err) {
res.send("Success");
} else {
res.send(err);
}
}
);
});
app.listen(3000, function() {
console.log("Server is running on port 3000");
});
我的数据库:
{
"_id": "5e1ca39ef94f6e20827ee890",
"name": "orange",
"price": "0.99",
"quantity": 1
},
{
"_id": "5e1ca39ef94f6e20827ee893",
"name": "apple",
"price": "1.5",
"quantity": 2
},
{
"_id": "5e1ca39ef94f6e20827ee896",
"name": "bread",
"price": "3.99",
"quantity": 1
},
{
"_id": "5e1ca39ef94f6e20827ee899",
"name": "milk",
"price": "4.99",
"quantity": 3
},
{
"_id": "5e1ca39ef94f6e20827ee89c",
"name": "coffee",
"price": "4.99",
"quantity": 2
}
解决方案
您的代码有两个问题:
数量应该是Number
,而不是Int
:
const productSchema = {
name: String,
price: String,
quantity: Number
};
extended: true
不在extend: true
你的bodyParser
:
app.use(
bodyParser.urlencoded({
extended: true
})
);
这样我200
就可以走秀路线了。
推荐阅读
- cross-domain - 具有 Experience Cloud ID 的 Adobe Analytics 跨域
- sql - T-SQL触发器从当前减去前一个要插入新表
- firebase - Firebase 网络推送通知服务工作者问题
- html - 删除 textarea 和 div 现在大小不同
- python - 使用python检查数据库中是否存在某个数字并将1添加到变量
- user-interface - 在颤动中设置列宽
- php - 如何 var_dump Laravel 中的所有实例化对象?
- javascript - 如何使用 URL 选择 Material UI 选项卡
- c# - 展现动态 SQL 可查询性的最佳方法
- javascript - 异步和等待在 Axios React 中不起作用