7

アプリケーションでタイムラインのようなものを表示するためにアクティビティ モデルを作成したいのですが、マングース スキーマでコレクションを動的に参照する方法が正確にはわかりません。私はマングースを使用しています(3.6.20)

これまでのところ、アクターは常にユーザーですが、_object はユーザーまたは投稿にすることができます。

これは私が持っているもののようなものです:

userSchema = new Schema({
    _id: ObjectId;
    name: String
});

postSchema = new Schema({
    _id: ObjectId;
    author_id: String, ref: User
});

私がやりたいことは次のとおりです。

activitySchema = new Schema({
    _object: { String: Id of the thing, ref:'can be user or post'} // Object that the verb occurred on... can be a post or a user
    actor: { type: String, ref: 'User' },
    action: { type: String, default: ""}, //ex: has replied to:, or started following:
});

可能であれば、マングースで動的参照を使用してこれを解決するにはどうすればよいですか?また、どのように設定しますか?

ありがとうございました!

4

4 に答える 4

6

activitySchema に両方がないのはなぜですか?

activitySchema = new Schema({
    user:{ type: Schema.Types.ObjectId, ref:'User' }, 
    post:{ type: Schema.Types.ObjectId, ref:'Post' }, 
    actor: { type: String, ref: 'User' },
    action: { type: String, default: ""}, //ex: has replied to:, or started following:
});

mongoose オブジェクトを取得したら、populate('user') と populate('post') を呼び出すだけです。保存された内容に基づいて、ユーザーまたは投稿を埋めます。Mongodb は、これを行う上で非常に効率的です。

于 2013-10-29T00:33:00.897 に答える