Обновить пн goose массив - PullRequest
0 голосов
/ 26 мая 2020

так что в основном у меня есть это, и я пытаюсь обновить STATUS часть массива. Однако все, что я пробую, ничего не дает. Я тоже пробовал findOneAndUpdate. Я пытаюсь идентифицировать указанный c элемент в массиве по номеру, затем обновляю часть статуса этого массива c (Извините за форматирование, я еще не знаю, как это сделать на сайте ...) (Полный код можно найти здесь: https://sourceb.in/0811b5f805)

Код

const ticketObj = {
  number: placeholderNumber,
  userID: message.author.id,
  message: m.content,
  status: 'unresolved'
}

let tnumber = parseInt(args[1])
let statuss = "In Progress"
await Mail.updateOne({
  "number": tnumber
}, { $set: { "status": statuss } })

Схема

const mongoose = require('mongoose')

const mailSchema = new mongoose.Schema({
  guildID: { type: String, required: true },
  ticketCount: { type: Number, required: true },
  tickets: { type: Array, default: [] }
}, { timestamps: true });

module.exports = mongoose.model('Mail', mailSchema)

1 Ответ

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

Вам нужно использовать что-то вроде Mail.updateOne({"guildID": message.guild.id}, {$set: {`tickets.${tnumber}.status`: statuss}})

или для всех объектов в массиве:

Mail.updateOne({"guildID": message.guild.id}, {$set: {'tickets.$[].status': statuss}})

Кроме того, вам необходимо создать схему для tickets, как описано в документах :

one important reason to use subdocuments is to create a path where there would otherwise not be one to allow for validation over a group of fields

...