У меня следующая проблема.
let putUsernames = async (entry) => {
let playerData = [];
await entry.messages.forEach(async (log, index) => {
let username;
playerData.forEach((data) => {
if (data.uuid == log.uuid) {
username = data.username;
}
});
if (!username) {
let data = await PlayerSchema.schema.findOne({ uuid: log.uuid }).exec();
if (data) {
data = data.toObject();
username = data.username;
}
console.log("uuid: " + log.uuid);
console.log("username: " + username);
playerData.push({
uuid: log.uuid,
username
});
}
console.log(username);
entry.messages[index].username = username;
});
return entry;
};
С помощью этой функции я пытаюсь получить имена пользователей из базы данных mon go, равной uuid из журнала ввода. Журнал записи выглядит следующим образом:
{
"_id":"5df695a54df4b838c380643b",
"id":"U8HJ08J",
"date":1576441253139,
"messages":[
{
"uuid":"uuid1",
"message":"Hello!",
"date":1576440196224
},
{
"uuid":"uuid2",
"message":"Hello there",
"date":1576440202681
}
]
}
Теперь, что я пытаюсь в данный момент, это pu sh имена пользователей в объектах сообщения:
"messages":[
{
"uuid":"uuid1",
"message":"Hello!",
"date":1576440196224,
"username": "username1"
},
{
"uuid":"uuid2",
"message":"Hello there",
"date":1576440202681,
"username": "username2"
}
]
На То же самое я пытаюсь вставить sh имена пользователей в playerData, чтобы мне не всегда приходилось обращаться к базе данных mon go, но похоже, что нажатие на нее не работает так, как я хочу.
console.log ("uuid:" + log.uuid); и console.log ("имя пользователя:" + имя пользователя); работает нормально, и они также выводят правильные данные, но entry.messages [index] .username = username; не работает, так что это означает, что запись совпадает с началом: (
Есть кто-нибудь, кто имеет какие-либо идеи? Заранее спасибо!