Всем привет, появился вопрос для разработчиков которые используют mongodb (mongoose).
У меня есть две таблицы: User, Character.
В таблице User я использую ref для сохранения данных о персонаже (в таблице Character), всё это выглядит примерно так:
В таблице Character у меня есть "position", представленный как объект (для сохранения позиции игрока при его выходе из игры).
Так вот, это всё я веду к тому, что при использовании ивента "playerQuit', я встречаю подобную ошибку: "Expired multiplayer object has been used".
Вот как это выглядит (код):
Просмотрел документацию mongoose, но ничего полезного не нашёл, может плохо искал.
Заранее спасибо!
У меня есть две таблицы: User, Character.
В таблице User я использую ref для сохранения данных о персонаже (в таблице Character), всё это выглядит примерно так:
JavaScript:
import { Schema } from 'mongoose';
const userSchema = new Schema({
// ....
character: {
type: Schema.Types.ObjectId,
ref: "Character",
},
// ....
});
В таблице Character у меня есть "position", представленный как объект (для сохранения позиции игрока при его выходе из игры).
Так вот, это всё я веду к тому, что при использовании ивента "playerQuit', я встречаю подобную ошибку: "Expired multiplayer object has been used".
Вот как это выглядит (код):
JavaScript:
playerQuit: async (player: PlayerMp) => {
try {
// findUser работает
const findUser = await UserModel.findOneAndUpdate(
{ serial: player.serial },
{ $set: { loggedIn: false } }
);
// Error: Expired multiplayer object has been used (пробовал добавить await, но не помогло)
UserModel.findOne({ serial: player.serial })
.populate({ path: "character" }).exec(function (err: any, users: any) {
if (err) return console.error(`Populate error - ${err}`);
users.character.position = player.position;
});
findUser!.save();
} catch (e) {
console.log(e);
}
},
Просмотрел документацию mongoose, но ничего полезного не нашёл, может плохо искал.
Заранее спасибо!