Вот моя проблема. У меня есть две схемы, одна вложенная в другую в виде массива. Я пытаюсь вставить sh в массив и сохранить вложенный документ, но он не сохраняется должным образом, я получаю объект, который сохраняется, но ни одно из полей не сохраняется, за исключением его _id. Нужно ли сначала сохранять каждую модель отдельно? В чем здесь проблема?
Вот мои две схемы:
import mongoose from "mongoose";
import {contactSchema} from "./ContactSchema"
export const bigSchema = new mongoose.Schema({
testField: {
type: String,
required: true,
},
contacts: [{ contactSchema }],
}
});
export default mongoose.model("Big", bigSchema);
import mongoose from "mongoose";
export const contactSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
age: {
type: number,
required: false,
}
});
export default mongoose.model("Contact", contactSchema);
Вот мой код, который я использую для pu sh для массива контактов.
public async saveContact(
testField: string,
name: string,
age: number,
) {
const newContact = new Contact({
name: name,
age: age,
});
console.log(newContact);
return UserContacts.findOneAndUpdate(
{
testField: testField,
},
{ $push: { contacts: newContact } },
{ new: true, upsert: true }
);
}
Однако, когда я проверяю свою базу данных, я вижу именно это. Существует объектный идентификатор, но не тот, который я ожидаю увидеть, который представляет собой список вложенных документов «Контакт» внутри моего «большого» документа
{
"_id" : ObjectId("XXXX"),
"testField" : "XXXXX",
"contacts" : [
{
"_id" : ObjectId("XXXXX")
}
],
"__v" : 0
}