ユーザーがイベントに自分自身を追加したり、イベントから自分自身を削除したり、イベントでゲストを招待できるかどうかを指定するイベントリストを作成しようとしています。重複しないで別のモデルを参照するプロパティを更新する
私はイベントスキーマとユーザースキーマを持っています。イベントスキーマはユーザースキーマを参照しています。したがって、新しいイベントが作成されると、ユーザーはIDでイベントを追加できます。
これで、ユーザーにゲストを追加できるようにしようとしています。どのように達成するのですか?
は、ここでの例です
ユーザー・スキーマ:
let UserSchema = new mongoose.Schema({
email: {
type: String,
lowercase: true,
unique: true,
required: true
},
name:{
type: String,
require: true
},
password: {
type: String,
required: true
},
...
イベントスキーマ:
...
//In this example the guest will be added but duplicates will occur
user:[{
guest: Number, // To make it clear this is not referencing anything it's just a number
attending: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
}]
:スキーマにrelavant部分を定義する
let EventSchema = new mongoose.Schema({
date: {
type: Date,
unique: true,
timestamps: true,
required: true
},
title: {
type: String,
require: true
},
// Guest property is ignored
attending: [{
type: mongoose.Schema.Types.ObjectId,
guest: Number, //This is being ingored and never updated
ref: 'User'
}]
})
第二の方法
上記の設定で、重複を防ぐためにaddToSetで型とゲストのプロパティを更新するにはどうすればよいですか?
Event.findOneAndUpdate({_id:req.body.eventId}, query)
あなたは任意の例文書を持っていますか? 「ゲスト」フィールドは「出席する」フィールド内に埋め込まれているようですが、意図的なデザインですか? – chridam
はい出席者フィールドを出席者フィールドの下に関連付ける必要があります。これは、ユーザーが出席してゲストを連れて来ることができるイベントリストです。そのため、各イベントには、ユーザーIDとイベントに招待するゲストの数が必要です。 –
DBに永続化したいもののサンプルスニペットを書いておけば便利です。 – Paul