#javascript #node.js #mongodb #mongoose #discord.js
#javascript #node.js #mongodb #mongoose #discord.js
Вопрос:
У меня следующая структура
{
"serverId": serverId,
"name": serverName,
"members":[
{
"birthday":{
"$date":{
"$numberLong":birthDate
}
},
"user": userName,
},
{
"birthday":{
"$date":{
"$numberLong":birthDate2
}
},
"user": userName2,
}
]
}
}
Я не уверен, как использовать Mongoose для обновления дня рождения одного из участников.
У меня есть две модели для объектов, которые я сохраняю:
const { Schema, model } = require('mongoose')
const memberSchema = Schema({
birthday: {
default: '',
type: Date,
},
user: {
default: '',
type: String,
},
})
module.exports = model('Member', memberSchema, 'memberTest')
const mongoose = require('mongoose')
const serverSchema = mongoose.Schema({
serverId: {
default: '1',
type: String,
},
name: {
default: 'emptyServer',
type: String,
},
members: [],
})
module.exports = mongoose.model('Server', serverSchema, 'servers')
Я пытался сделать это:
const newBirthday = new Member({
user: message.author.tag,
birthday: date
})
let dbMember = dbServer.members.filter(member => member.user = message.author.tag)
if(dbMember){
dbServer.update({'members.user': message.author.tag}, {'$set': {
'members.$.user': message.author.tag,
'members.$.birthday': date
}})
}else{
dbServer.members.push(newBirthday)
}
dbServer.save()
но он не обновляет элементы в БД.
После того, как я протестировал это, я смог увидеть обновление объекта (зарегистрировав его), но когда я заглядываю в de DB, изменений там нет. Я не совсем уверен, действительно ли то, что я делаю, не соответствует действительности
Комментарии:
1. Я не уверен, но посмотрите, можете ли вы просто напрямую обновить сам элемент:
const member = dbServer.members.find(m => m.user === message.author.tag); member.birthday = date; member.save()
2. Нет, у члена нет функции сохранения ()
3. Если вы измените свою схему, как в приведенном здесь примере, я думаю, тогда это может сработать. В этом случае
members: []
это будет массив ссылок наMember
экземпляры.