你能帮帮我吗。我正在学习这个教程:“管理订单与Mongoose创建一个REST API与node.js”https://www.youtube.com/watch?v=vkuy8qsczwy&list=pl55riy5tl51q4d-b63kbnygu6opnpfk_q&index=8它已经很老了(2017年),但我认为仍然不错。但是我被卡住了(大约8分钟)。以与教程中相同的方式进行POST请求会导致我出错。我看过以前类似这样的话题,视频下面的评论,但是我没有找到答案。下面是代码:
订货方案
const mongoose = require('mongoose');
const orderSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
product: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Product',
required: true,
},
quantity: { type: Number, default: 1 },
});
module.exports = mongoose.model('Order', orderSchema);
产品方案
const mongoose = require('mongoose');
const productSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: { type: String, required: true },
price: { type: Number, required: true },
});
module.exports = mongoose.model('Product', productSchema);
过帐订单工艺路线
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const Order = require('../models/order');
router.post('/', (req, res, next) => {
const order = new Order({
_id: mongoose.Types.ObjectId(),
quantity: req.body.quantity,
product: req.body.productId,
});
order
.save()
.then((result) => {
console.log(result);
res.status(201).json(result);
})
.catch((err) => {
console.log(err);
res.status(500).json({
error: err,
});
});
});
请求
POST http://localhost:3000/orders
Content-Type: application/json
{
"quantity": "10",
"poductId": "5fae9023c8e7ac3e54ae6752"
}
我得到:
Error: Order validation failed: product: Path `product` is required.
{
"error": {
"errors": {
"product": {
"name": "ValidatorError",
"message": "Path `product` is required.",
"properties": {
"message": "Path `product` is required.",
"type": "required",
"path": "product"
},
"kind": "required",
"path": "product"
}
},
"_message": "Order validation failed",
"message": "Order validation failed: product: Path `product` is required."
}
}
看起来您的请求JSON中有一个错误
{
"quantity": "10",
"poductId": "5fae9023c8e7ac3e54ae6752" ---> change this to productId (missing `r`)
}