Tengo este esquema para representar a un usuario:
const UserSchema = mongoose.Schema({ username: { type: String, required: false }, social: [{ facebook: { type: String, required: false }, twitter: { type: String, required: false } }] });¿Cómo puedo guardar valores usando este esquema? Lo que estoy haciendo hasta ahora:
user.username = username; user.social['facebook'] = facebook; user.social['twitter'] = twitter; await user.save();esto funciona para el nombre de usuario, pero social sigue siendo una matriz vacía. yo también probé
user.social.facebook = facebook; user.social.twitter = twitter;mismo resultado:
"social" : [ ]Dado que social es una matriz de objects . ¿No deberías estar haciendo
user.social[0].facebook = facebook; user.social[0].twitter = twitter;En este momento, está tratando de acceder a la propiedad en el objeto, pero social es una matriz de objetos
¿Está seguro de que realmente desea que el campo social sea una matriz? Dado que almacena cuentas de facebook y twitter , es lógico que cada usuario tenga solo una de estas cuentas. En ese caso, es mejor si define social como objeto con propiedades anidadas. Eso es más fácil de mantener y funcionará con su código.
social: { facebook: { type: String, required: false }, twitter: { type: String, required: false } } Si realmente necesita que el campo social sea una matriz, puede cambiar su código de esta manera:
user.username = username; user.social[0] = { 'facebook': facebook, 'twitter': twitter, }; await user.save();