Loopback中的用户信息
User infomation in Loopback
我正在环回中制作游戏后端。
我有一个这样定义的用户模型。
{
"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();
});
};
但在我的数据库中没有显示任何内容,有人知道我该如何解决这个问题吗?
我要做的第一件事是向 Stats.create()
方法添加适当的回调以查看创建方法为何没有按照您的预期进行,以及发送更多逻辑 next()
取决于操作的结果。我还更改了通过 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();
}
});
};
我正在环回中制作游戏后端。 我有一个这样定义的用户模型。
{
"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();
});
};
但在我的数据库中没有显示任何内容,有人知道我该如何解决这个问题吗?
我要做的第一件事是向 Stats.create()
方法添加适当的回调以查看创建方法为何没有按照您的预期进行,以及发送更多逻辑 next()
取决于操作的结果。我还更改了通过 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();
}
});
};