如何使用猫鼬模式保存字符串数组
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;
现在您正在尝试访问 属性 对象,但社交是一个对象数组
您确定 social
字段是一个数组吗?由于它存储 facebook
和 twitter
帐户,因此每个用户将只有一个这些帐户是合乎逻辑的。在这种情况下,最好将 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();
我用这个模式来表示用户:
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;
现在您正在尝试访问 属性 对象,但社交是一个对象数组
您确定 social
字段是一个数组吗?由于它存储 facebook
和 twitter
帐户,因此每个用户将只有一个这些帐户是合乎逻辑的。在这种情况下,最好将 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();