No sé cómo hacer una lista de documentos con mangosta (Nodo JS), ¿alguien sabe cómo hacer eso?

new mongoose.Schema({
   first_name: String,
   last_name: String,
   companies: [
      {
         name_company:String,
         post:String,
         time_in_post:String,
      }     

   ] 
});

Necesito insertar muchos documentos con esquemas de compañías en diferentes momentos, pero no sé cómo hacerlo con mangosta.

¿Alguien puede ayudarme?

0
Leandro Gelain 17 abr. 2020 a las 03:12

2 respuestas

La mejor respuesta

Parece que dividir esto en diferentes esquemas podría ser una buena idea. Especialmente si otras personas serán parte de la misma compañía.

Por ejemplo, tal vez podrías probar esto:


const CompanySchema = new mongoose.Schema({
    name: String,
    // ... other company specific attributes
});

const Company = mongoose.model("Company", CompanySchema);

const UserSchema = new mongoose.Schema({
    firstName: String,
    lastName: String,
    companies: [
        {
            company: { type: mongoose.Schema.Types.ObjectId, ref: 'Company' },
            post: String,
            timeInPost: String,
        }
    ]
});

const User = mongoose.model("User", UserSchema);


Y la interacción con los modelos podría verse así:

(async () => {
    try {
        const company1 = await Company.create({ name: "Company 1" });
        const company2 = await Company.create({ name: "Company 2" });

        const user1 = await User.create({
            firstName: "first",
            lastName: "last",
            companies: [
                {
                    company: company1._id,
                    post: "....",
                    timeInPost: "....",
                },
                {
                    company: company2._id,
                    post: "....",
                    timeInPost: "....",
                },
            ],
        });

        const users = await User.find({}).populate("companies.company"); // in order to populate the company with the document from the company collection

        // users with companies info
    } catch (error) {
        console.log(error);
    }
})();

Referenciado de la documentación de mangosta: https://alexanderzeitler.com / artículos / mongoose-referencing-schema-in-properties-and-arrays /

0
dillon 17 abr. 2020 a las 00:31

Puede usar este enfoque, de esta manera evita la duplicación de datos:

const companySchema = new mongoose.Schema({
  name_company: String,
  post: String,
  time_in_post: String
});

new mongoose.Schema({
  firstName: String,
  lastName: String,
  companies: [companySchema] // Array of subdocuments
});

Consulte la documentación completa aquí: https://mongoosejs.com/docs/guide.html

0
carboleda 17 abr. 2020 a las 00:33