Mongodb Mongoose updateMany用法

Mongodb Mongoose updateMany用法,mongodb,express,mongoose,mongoose-schema,Mongodb,Express,Mongoose,Mongoose Schema,我正在尝试更新mongoDB文档中的多个值 我正在使用ExpressJS和Mongoose 我认为要更新多个值,应该使用updateMany() 但是,它不断给我这样的错误信息: “订单”模型的路径“\u id”处的值“status”转换为ObjectId失败。 为了向您提供详细信息,以下是我的代码: 订单模型 const mongoose = require('mongoose'); const OrderSchema = mongoose.Schema({ user: { ty

我正在尝试更新mongoDB文档中的多个值

我正在使用ExpressJS和Mongoose

我认为要更新多个值,应该使用updateMany()

但是,它不断给我这样的错误信息:

“订单”模型的路径“\u 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并用谷歌搜索了许多源代码,但是我在这里没有找到我的错误。

您必须将
req.user.id
解析为ObjectID。你可以通过这样的写作来实现
mongoose.Types.ObjectId(请求用户id)

可能是您的问题与此相关:嗨,普拉善,谢谢您的提示,但它不起作用。