2016-07-19 3 views
0

私はループバックでゲームのバックエンドを作っています。 私はそのように定義されたユーザーモデルを持っています。ループバックのユーザー情報

{ 
    "name": "player", 
    "base": "User", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "stats": { 
     "type": "hasOne", 
     "model": "stats", 
     "foreignKey": "" 
    } 
    }, 
    "acls": [], 
    "methods": {} 
} 

そして、私のような定義されたユーザの統計情報を持っている:

{ 
    "name": "stats", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "experience": { 
     "type": "number", 
     "required": true, 
     "default": 0 
    }, 
    "coins": { 
     "type": "number", 
     "required": true, 
     "default": 0 
    }, 
    "titles": { 
     "type": [ 
     "string" 
     ], 
     "required": true, 
     "default": [] 
    } 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 

私は最終的にユーザが、その後、独自の統計情報を変更することはできませんするのALCを使用したいです。しかし、現時点では、ユーザーが登録されたときに状態を自動的に作成する方法はわかりません。私player.jsファイルがあるので、私の最初の試みは、操作フックを使用して統計情報を生成することでした:

module.exports = function (Player) { 
    var app = require('../../server/server'); 
    Player.observe('after save', function filterProperties(ctx, next) { 
     var Stats = app.models.Stats; 
     if(ctx.isNewInstance) { 
      Stats.create({"playerId": ctx.instance.id}); 
     } 
     next(); 
    }); 
}; 

しかし、私のデータベースには何も、私はこの問題を解決することができますどのように誰もが知っている、アップ表示されていませんか?

答えて

1

最初に行うことは、Stats.create()メソッドに適切なコールバックを追加して、操作の結果に応じてnext()を送信するいくつかのロジックとともに、createメソッドが期待したとおりに動作しない理由を確認することです。私はまた、あなたがPlayerモデルを通してそれにアクセスすることによってStatsモデルへの参照を得る方法を変更しました。

module.exports = function (Player) { 

    Player.observe('after save', function filterProperties(ctx, next) { 

    var Stats = Player.app.models.Stats; 

    if(ctx.isNewInstance) { 

     Stats.create({"playerId": ctx.instance.id}, function(err, stats) { 

     if(err) { 
      console.log("[Player after save] error creating stats instance for playerId " + ctx.instance.id, err); 
      next(err); 
     } else { 
      console.log("[Player after save] Created new empty stats instance for playerId " + ctx.instance.id, stats); 
      next(); 
     } 

     }); 

    } else { 
     console.log("[Player after save] Existing player instance, did not create stats"); 
     next(); 

    } 

    }); 

};