【发布时间】:2020-06-21 22:43:42
【问题描述】:
我正在尝试更新 mongoDB 文档中的多个值。
我正在使用 ExpressJS 和 Mongoose。
我相信要更新多个值,我应该使用 updateMany()。
但是,它一直给我这样的错误消息:
'对于模型“order”的路径“_id”处的值“status”,转换为 ObjectId 失败'
为了给你详细信息,下面是我的代码:
订单模式
const mongoose = require('mongoose');
const OrderSchema = mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'users',
required: true
},
menus: {
type: mongoose.Schema.Types.ObjectId,
ref: 'menus',
required: true
},
date: {
type: Date,
default: Date.now
},
status: {
type: String,
default: 'pending'
}
});
module.exports = mongoose.model('order', OrderSchema);
另外,这是我的 ExpressJS 代码:
const express = require('express');
const router = express.Router();
const Order = require('../models/Order');
const User = require('../models/User');
// @route PUT api/orders/status
// @desc Update All Order status
// @access Private
router.put('/status', auth, async (req, res) => {
const { status } = req.body;
const orderFields = {};
if (status) orderFields.status = status;
try {
const orders = await Order.updateMany(
{ user: req.user.id },
{ $set: orderFields }
);
if (!orders || orders.length === 0)
return res.status(404).json({ msg: 'Order not found!' });
res.json(orders);
} catch (err) {
console.error(err);
res.status(500).json({ error: err.message });
}
});
你们知道我错过了什么吗?
我检查了 mongoose API 并用谷歌搜索了许多来源,但在这里我找不到我的错误。
【问题讨论】:
-
可能是您的问题与此相关:stackoverflow.com/a/57455151/11711316
标签: mongodb express mongoose mongoose-schema