Как обновить массив внутри схемы мангуста? - PullRequest
0 голосов
/ 20 апреля 2019

Как обновить массив внутри схемы Мангуста с помощью updateOne?

У меня есть одна модель в моем приложении Node.Js, которую я сделал со схемой mongoose. Одним из полей моей схемы является массив:

guestsNames: []

Я уже могу сохранять элементы внутри этого массива, но я не нашел способа обновить элементы внутри него.

Вот вся моя схема:

const screenImageSchema = mongoose.Schema({
    company: {
        type: String,
        require: true,
        trim: true
    },
    guestsNames: [],
    imageName: {
        type: String,
        require: true
    },
    defaultImageName: {
        type: String,
        require: true
    },
    date: {
        type: String,
        default: Date.now,
        require: true
    },
    activated: {
        type: String,
        default: 'Enabled'
    },
    wsType: {
        type: String,
        default: 'Image'
    }
}, {timestamps: true});

... и мой метод updateOne:

screenImageSchema.methods.updateOne = function(id, screenImage) {
    const updatedScreenImage = {
        company: screenImage.company,
        guestsNames: screenImage.guests,
        imageName: screenImage.imageName,
        defaultImageName: screenImage.defaultImageName,
        date: screenImage.date,
        activated: screenImage.activated,
        wsType: screenImage.wsType
    }

    ScreenImage.updateOne(id, updatedScreenImage, {new: true});
}

Параметр 'screenImage', передаваемый в функцию, является объектом со всей необходимой мне информацией, включая массив со всеми строками для guestNames (я уже проверил, правильно ли передаются параметры объекту, и они есть) , Все поля обновляются с помощью этого фрагмента кода, кроме поля guestNames. Что я делаю не так и как я могу правильно настроить массив guestNames?

Приветствие.

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Вы можете напрямую обновить ваш массив следующим образом

ScreenImage.updateOne(id, { $set : { guestNames : newArray }})

Вам необходимо использовать $ set для замены значения поля, смотрите mongoDB $ set

0 голосов
/ 20 апреля 2019

попробуйте это, если это работает

screenImageSchema.methods.updateOne = function(id, screenImage) {
const updatedScreenImage = {
    company: screenImage.company,
    guestsNames[0]: screenImage.guests,
    imageName: screenImage.imageName,
    defaultImageName: screenImage.defaultImageName,
    date: screenImage.date,
    activated: screenImage.activated,
    wsType: screenImage.wsType
}
ScreenImage.updateOne(id, updatedScreenImage, {new: true});

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...