繁体   English   中英

如何使用 mongoose 模式保存字符串数组

[英]How to save an array of strings using mongoose schema

我有这个模式来代表一个用户:

const UserSchema = mongoose.Schema({
    username: {
        type: String,
        required: false
    },
    social: [{
        facebook: {
            type: String,
            required: false
        },
        twitter: {
            type: String,
            required: false
        }
    }]
});

如何使用此模式保存值? 到目前为止我在做什么:

user.username = username;
user.social['facebook'] = facebook;
user.social['twitter'] = twitter;

await user.save();

这适用于用户名,但社交仍然是一个空数组。 我也试过

user.social.facebook = facebook;
user.social.twitter = twitter;

同样的结果:

 "social" : [ ]

由于social是一组objects 你不应该做

user.social[0].facebook = facebook;
user.social[0].twitter = twitter;

现在你正试图访问 object 上的属性,但 social 是一个对象数组

您确定您真的希望social field 成为一个数组吗? 由于它存储facebooktwitter帐户,因此每个用户将只有一个这些帐户是合乎逻辑的。 在这种情况下,最好将social定义为具有嵌套属性的 object。 这更容易维护,并且可以与您的代码一起使用。

social: {
  facebook: { type: String, required: false },
  twitter: { type: String, required: false }
}

如果你真的需要social field 是一个数组,你可以像这样改变你的代码:

user.username = username;
user.social[0] = {
  'facebook': facebook,
  'twitter': twitter,
};

await user.save();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM