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

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" : [ ]

因为 socialobjects 的数组。你不应该做

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

现在您正在尝试访问 属性 对象,但社交是一个对象数组

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

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

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

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

await user.save();