Пн goose обновление много использования - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь обновить несколько значений из документа mongoDB.

Я использую ExpressJS и Пн goose.

Я считаю, что нужно обновить несколько значений , Я должен использовать updateMany ().

Тем не менее, он продолжает выдавать мне сообщение об ошибке, подобное этому:

'Ошибка приведения к ObjectId для значения "status" в пути "_id" для модель "заказ" '

Чтобы дать вам подробности, вот мой код ниже:

Заказ модели

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 });
  }
});

Ребята, вы понимаете, что я пропустил?

Я проверил API mon goose и погуглил много источников, но я не смог найти свою ошибку здесь.

1 Ответ

0 голосов
/ 10 марта 2020

Вам придется проанализировать req.user.id до ObjectID. Вы можете достичь этого, написав вот так mongoose.Types.ObjectId(req.user.id);

...