16

アクティビティログの詳細にネストされたオブジェクトが必要です。例を参照してください。マングースでスキーマを定義するにはどうすればよいですか?

activity: {
    date: '1/1/2012' ,
    user: 'benbittly', 
    action: 'newIdea', 
    detail: {
        'title': 'how to nest'
        , 'url': '/path/to/idea'
    }

activity: {
    date: '1/2/2012' ,
    user: 'susyq', 
    action: 'editProfile', 
    detail: {
        'displayName': 'Susan Q'
        , 'profileImageSize': '32'
        , 'profileImage': '/path/to/image'
    }
4

2 に答える 2

14

混合タイプを使用します。これにより、例に任意のサブオブジェクトを格納できます。

var Activity = new Schema({
    date : Date
  , user : String 
  , action : String
  , detail : Mixed
})
于 2012-04-13T19:46:12.407 に答える
14

スキーマ内の任意のオブジェクト(つまり「何でも行く」)を示すには、Mixed型または単にを使用できます{}

var activity: new Schema({
    date: Date,
    user: String, 
    action: String, 
    detail: Schema.Types.Mixed,
    meta: {}  // equivalent to Schema.Types.Mixed

});

キャッチ

ただし、柔軟性を高めるために問題があります。Mixed(または)を使用する{}場合は、次のように変更を加えたことをマングースに明示的に伝える必要があります。

activity.detail.title = "title";
activity.markModified('detail');
activity.save();

ソース

于 2014-11-11T21:40:45.513 に答える