Он говорит, что элементы не определены - PullRequest
0 голосов
/ 08 мая 2020

Код показан ниже.

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const user = new Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    resetToken: String,
    resetExpiration: String,
    products: [{type: mongoose.Types.ObjectId, required: true, ref: 'Shop'}],
    cart: {
        items: [
            {
                productId: {type: mongoose.Types.ObjectId, ref: 'Shop', required: true},
                quantity: {type: Number, required: true},
            }
        ]
    },
});

user.methods.addToCart = (product) => {

    const itemIndex = this.cart.items.findIndex(prod => {
        return prod.productId.toString() === product._id.toString();
    });

    let newQuantity = 1;
    const updatedCartItems = [...this.cart.items];

    if(itemIndex >= 0) {
        newQuantity = this.cart.items[itemIndex].quantity + 1;
        updatedCartItems[itemIndex].quantity = newQuantity;
    } else {
        updatedCartItems.push({
            productId: product,
            quantity: newQuantity
        });
    }

    const updatedCart = {
        items: updatedCartItems
    }
    this.cart = updatedCart;
    return this.save();
}

const model = mongoose.model('User', user);

module.exports = model;

Я пытаюсь сохранить товар в методе экземпляра корзины в соответствии с приведенной выше схемой, но когда я отправляю товар со своего контроллера в addToCart, он говорит, что элементы не определены на this.cart.items. Я не часто использовал метод экземпляра в mon goose, поэтому я не знаю, что эта проблема связана со схемой или общей проблемой.

дайте мне знать, если вам понадобится дополнительная информация.

1 Ответ

0 голосов
/ 08 мая 2020

Это была глупая ошибка, на самом деле я использовал стрелочную функцию. поэтому он не был привязан к схеме.

...