我正在基于余额转移示例开发一个超级账本结构应用程序,该应用程序目前仅在注册用户时出现。我有一些组织,例如bank,caseManager ...起初是由于没有从属关系(我添加的某些组织)引发错误消息,但随后在我添加了一些行以创建从属关系后,出现了一些奇怪的消息....我只被允许注册一个用户。如果我尝试注册更多,它将显示以下内容:
[ERROR] Helper - Failed to get registered user: userABC with error: Error: Enrollment failed with errors [[{"code":0,"message":"2 rows were affected when updating the state of identity userABC"}]]
我已经搜索了很长时间,但仍然找不到答案。请帮忙!!!
代码:
var registerUser = async function (params) {
try {
var userOrg = params.userOrg;
var org = params.org;
var username = params.username;
var client = await getClientForOrg(userOrg, username, true);
logger.debug('Successfully initialized the credential stores');
var user = await client.getUserContext(username, true);
if (user && user.isEnrolled()) {
logger.info('Successfully loaded member from persistence');
} else {
logger.info('User %s was not enrolled, so we will need an admin user object to register', username);
var admins = hfc.getConfigSetting('admins');
let adminUserObj = await client.setUserContext({ username: admins[0].username, password: admins[0].secret });
let caClient = client.getCertificateAuthority();
let affiliationService = caClient.newAffiliationService();
console.log("passed 1");
let registeredAffiliations = await affiliationService.getAll(adminUserObj);
console.log("passed 2");
if (!registeredAffiliations.result.affiliations.some(
x => x.name == org)) {
let affiliation = org + '.department1';
await affiliationService.create({
name: affiliation,
force: true
}, adminUserObj);
}
console.log("passed 3");
let secret = await caClient.register({
enrollmentID: username,
role: 'user',
affiliation: org + '.department1'
}, adminUserObj);
console.log("passed 4");
logger.debug('Successfully got the secret for user %s: %s', username, secret);
user = await client.setUserContext({ username: username, password: secret });
user.setRoles(['client']);
user._enrollmentSecret = secret.toString();
user = await client.setUserContext(user);
logger.debug('Successfully enrolled username %s and setUserContext on the client object', username);
}
if (user && user.isEnrolled) {
var response = {
success: true,
secret: user._enrollmentSecret,
message: username + ' enrolled Successfully in ' + userOrg,
};
console.log(response);
return response;
} else {
throw new Error('User was not enrolled ');
}
} catch (error) {
logger.error('Failed to get registered user: %s with error: %s', username, error.toString());
return 'failed: ' + error.toString();
}
};
我注意到的一件事是,如果注册/注册不会成功,则调试行“ passed 2”和“ passed 3”将在控制台中打印两次。因此,在这种情况下,周围的线路将不止一次运行。
答案 0 :(得分:0)
我没有阅读/理解所有代码,但是记录另一侧发生的事情可能会有所帮助。因此,请查看ca的日志,看看那里有什么失败。也可能只是拼写问题。