Заполнение объектов Mongoose от id до нового поля - PullRequest
0 голосов
/ 29 января 2019

Я работал с mongoose, чтобы заполнить поле идентификаторов соответствующими документами в новом поле. Мой вопрос предполагает, что моя модель корзины -

let CartSchema = new mongoose.Schema({
    userId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    },
    productIds: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Product'
        }
    ]
});

Я хочу заполнить продукты, поэтому я использовал

Cart.find({}).populate("products").exec(function (err, cart) {
    console.log(cart)
}

, но это заполняет документы с тем же именем поля productIds, и я хочу заполнить эти поля новым именем поля с именем "products", поэтому я попробовал это

let CartSchema = new mongoose.Schema({
        userId: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'User'
        },
        productIds: [
            {
                type: String
            }
        ]
    }, { toJSON: { virtuals: true } });

CartSchema.virtual('products', {
    ref: 'Product',
    localField: 'productIds',
    foreignField: '_id',
});

Cart.find({}).populate("products").exec(function (err, cart) {
    console.log(cart)
}

, но вернулпустой массив с именем products.so как я могу заполнить массив productIds новым именем поля products с соответствующим массивом документов.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

аппроксимат правильный, вы должны увидеть свои данные в поле продуктов.убедитесь, что у вас есть правильные данные и модель n

0 голосов
/ 29 января 2019

Технически то, что вы хотите сделать, противоречит соглашению и стандартам в отношении использования мангуста.Вы можете упростить задачу, просто переименовав поле «productIds» в «products»:

Если подумать, все равно имеет смысл, массив products может быть массивом значений id продукта илиэто могут быть фактические документы, которые, в свою очередь, имеют поле «_id» на каждом из них, если вам это нужно.Нет необходимости раздувать JSON с отдельными свойствами только для значений id, они у вас уже есть!

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

...