【问题标题】:Mongoose updateMany usageMongoose update很多用法
【发布时间】: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 并用谷歌搜索了许多来源,但在这里我找不到我的错误。

【问题讨论】:

标签: mongodb express mongoose mongoose-schema


【解决方案1】:

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

【讨论】:

  • 嗨,Prashanth,感谢您的提示,但没有成功。
猜你喜欢
  • 2015-04-07
  • 2018-06-21
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 2015-05-20
  • 2020-06-08
  • 2013-07-13
相关资源
最近更新 更多