オブジェクトに対してuser.save()を呼び出しています。ここで、user.signup_date=nullを設定します。
user.first_name = null;
user.signup_date = null;
user.save();
しかし、mongodbのユーザーを見ると、signup_dateとfirst_nameがまだ設定されています...このフィールドを空またはnullとして効果的に設定するにはどうすればよいですか?
これらのプロパティを既存のドキュメントから削除するには、ドキュメントを保存する前undefined
にではなく、に設定します。null
user.first_name = undefined;
user.signup_date = undefined;
user.save();
Mongoose5.9.7でまだ機能していることを確認しました。これを機能させるには、削除しようとしているフィールドをスキーマで定義する必要があることに注意してください。
代わりに次のようにsetメソッドを試してみると、違いがありますか?
user.set('first_name', null);
user.set('signup_date', null);
user.save();
または、保存時にエラーが発生した可能性があります。保存するとどうなりますか。
user.save(function (err) {
if (err) console.log(err);
});
ログに何かを印刷しますか?
undefined
もう1つのオプションは、これらのプロパティに関してデフォルト値を定義することです。
次のようなもの:
let userSchema = new mongoose.Schema({
first_name: {
type: String,
default: undefined
},
signup_date: {
type: Date,
default: undefined
}
})
フィールドを削除するだけ
delete user.first_name;
delete user.signup_date;
user.save();
マングースのドキュメント(スキーマタイプ)で、説明に進むことができますArrays
。そこに、それはこれを言います:
配列は、デフォルト値
[]
(空の配列)を暗黙的に持っているため、特別です。
var ToyBox = mongoose.model('ToyBox', ToyBoxSchema);
console.log((new ToyBox()).toys); // []
このデフォルトを上書きするには、
default
値を次のように設定する必要がありますundefined
(要素内に追加しましたtoys
)
var ToyBoxSchema = new Schema({
toys: {
type: [{
name: String,
features: [String]
}],
default: undefined
}
});