Mi primer objeto es
conversation = { "members": [ "613aa457e8d5f249922e7f86", "613aa457e8d5f249922e7faa" ], "_id": "613aace085dee060fdeb6a9c", }Mi segundo objeto es
message = { "read": false, "_id": "613aadd58becf96394001efa", "sender": "613aa457e8d5f249922e7f86", "text": "hi", "conversation_id": "613aadcc8becf96394001ee8", }Mi resultado esperado es
{ "members": [ "613aa457e8d5f249922e7f86", "613aa457e8d5f249922e7faa" ], "_id": "613aace085dee060fdeb6a9c", "message": { "read": false, "_id": "613aadd58becf96394001efa", "sender": "613aa457e8d5f249922e7f86", "text": "hi", "conversation_id": "613aadcc8becf96394001ee8", } }Al principio probé con el operador de propagación siguiendo este enlace
let new_object= { ...conversation, messages }y obtuve el resultado algo como esto
También probé de esta manera siguiendo stack-overflow
let new_object= Object.assign(conversation, message); let new_object= Object.assign({},conversation, message);Pero no obtengo el resultado esperado.
Parece que podría estar cargando sus datos desde mongoose, que de forma predeterminada decorará sus objetos de modo que no sean los "objetos de javascript simples y antiguos" que cree que son.
Mongoose proporciona un métodotoObject en Document que puede convertir un objeto que cargó desde la base de datos en el objeto simple que está esperando. Probablemente quieras hacer algo como esto:
// assume conversationFromDb and messageFromDb are Mongoose documents const conversation = conversationFromDb.toObject(); const message = messageFromDb.toObject(); const newObject = { ...conversation, message };