无法将新资源数组的所有元素添加到注册表
Not able to add all elements of an array of new resources to the registry
我正在尝试使用 getParticipantRegistry().addAll()
将数组的所有元素添加到 composer-playground 上的注册表中,但它只是将前两个元素添加到注册表中,而不是数组的所有元素。如控制台输出所示,数组中有 4 个元素,但只有前两个元素被添加到注册表中。
代码:
/**
* Add Students
* @param {org.paradox.participants.AddStudents} addStudents
* @transaction
*/
async function addStudents(transaction) {
var factory = await getFactory()
var namespace = 'org.paradox.participants'
var studentRegistry = await getParticipantRegistry(namespace + '.Students')
var students = []
for (var studentID of ['1', '2', '3', '4']) {
var student = factory.newResource(namespace, 'Students', studentID)
student.name = 'Student ' + studentID
if (studentID % 2 != 0)
student.subjects = ['Science', 'Maths']
else
student.subjects = ['SocialScience', 'English', 'Hindi']
students.push(student)
}
console.log(students)
studentRegistry.addAll(students)
}
控制台:
@JS : IdentityManager :<ResourceManager>() Binding in the tx names and impl
main.0dbfc9903b7dba442744.bundle.js:1:937780
[…]
0: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "1", … }
1: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "2", … }
2: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "3", … }
3: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "4", … }
length: 4
__proto__: Array []
main.0dbfc9903b7dba442744.bundle.js%20line%201%20%3E%20Function%20line%203%20%3E%20eval:35:3
@JS : EngineTransactions :createHistorianRecord() created historian record
main.0dbfc9903b7dba442744.bundle.js:1:937780
我没有看到你的模型,但鉴于 Students 是:
participant Students identified by studentId {
o String studentId
o String name
o String[] subjects
}
这是我在 Composer v0 中使用的代码。16.x 使用在线 Playground 的代码 https://composer-playground.mybluemix.net/:
var factory = await getFactory();
var namespace = 'org.paradox.participants';
var students = [];
var myArray = ["1","2","3","4"];
for (var studentID in myArray) {
var student = factory.newResource(namespace, 'Students', studentID);
student.name = 'Student ' + studentID;
if (studentID % 2 != 0)
student.subjects = ['Science', 'Maths'];
else
student.subjects = ['SocialScience', 'English', 'Hindi'];
students.push(student);
} // end for
console.log('student array is ' + students);
return getParticipantRegistry(namespace + '.Students')
.then(function(studentRegistry) {
studentRegistry.addAll(students)
});
在 studentRegistry.addAll(students)
之前应该有一个 await 关键字,因为 studentRegistry.addAll(students)
是一个异步方法。
最后代码应该是这样的:
/**
* Add Students
* @param {org.paradox.participants.AddStudents} addStudents
* @transaction
*/
async function addStudents(transaction) {
var factory = await getFactory()
var namespace = 'org.paradox.participants'
var studentRegistry = await getParticipantRegistry(namespace + '.Students')
var students = []
for (var studentID of ['1', '2', '3', '4']) {
var student = factory.newResource(namespace, 'Students', studentID)
student.name = 'Student ' + studentID
if (studentID % 2 != 0)
student.subjects = ['Science', 'Maths']
else
student.subjects = ['SocialScience', 'English', 'Hindi']
students.push(student)
}
console.log(students)
await studentRegistry.addAll(students)
}
我正在尝试使用 getParticipantRegistry().addAll()
将数组的所有元素添加到 composer-playground 上的注册表中,但它只是将前两个元素添加到注册表中,而不是数组的所有元素。如控制台输出所示,数组中有 4 个元素,但只有前两个元素被添加到注册表中。
代码:
/**
* Add Students
* @param {org.paradox.participants.AddStudents} addStudents
* @transaction
*/
async function addStudents(transaction) {
var factory = await getFactory()
var namespace = 'org.paradox.participants'
var studentRegistry = await getParticipantRegistry(namespace + '.Students')
var students = []
for (var studentID of ['1', '2', '3', '4']) {
var student = factory.newResource(namespace, 'Students', studentID)
student.name = 'Student ' + studentID
if (studentID % 2 != 0)
student.subjects = ['Science', 'Maths']
else
student.subjects = ['SocialScience', 'English', 'Hindi']
students.push(student)
}
console.log(students)
studentRegistry.addAll(students)
}
控制台:
@JS : IdentityManager :<ResourceManager>() Binding in the tx names and impl
main.0dbfc9903b7dba442744.bundle.js:1:937780
[…]
0: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "1", … }
1: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "2", … }
2: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "3", … }
3: Object { "$namespace": "org.paradox.participants", "$type": "Students", "$identifier": "4", … }
length: 4
__proto__: Array []
main.0dbfc9903b7dba442744.bundle.js%20line%201%20%3E%20Function%20line%203%20%3E%20eval:35:3
@JS : EngineTransactions :createHistorianRecord() created historian record
main.0dbfc9903b7dba442744.bundle.js:1:937780
我没有看到你的模型,但鉴于 Students 是:
participant Students identified by studentId {
o String studentId
o String name
o String[] subjects
}
这是我在 Composer v0 中使用的代码。16.x 使用在线 Playground 的代码 https://composer-playground.mybluemix.net/:
var factory = await getFactory();
var namespace = 'org.paradox.participants';
var students = [];
var myArray = ["1","2","3","4"];
for (var studentID in myArray) {
var student = factory.newResource(namespace, 'Students', studentID);
student.name = 'Student ' + studentID;
if (studentID % 2 != 0)
student.subjects = ['Science', 'Maths'];
else
student.subjects = ['SocialScience', 'English', 'Hindi'];
students.push(student);
} // end for
console.log('student array is ' + students);
return getParticipantRegistry(namespace + '.Students')
.then(function(studentRegistry) {
studentRegistry.addAll(students)
});
在 studentRegistry.addAll(students)
之前应该有一个 await 关键字,因为 studentRegistry.addAll(students)
是一个异步方法。
最后代码应该是这样的:
/**
* Add Students
* @param {org.paradox.participants.AddStudents} addStudents
* @transaction
*/
async function addStudents(transaction) {
var factory = await getFactory()
var namespace = 'org.paradox.participants'
var studentRegistry = await getParticipantRegistry(namespace + '.Students')
var students = []
for (var studentID of ['1', '2', '3', '4']) {
var student = factory.newResource(namespace, 'Students', studentID)
student.name = 'Student ' + studentID
if (studentID % 2 != 0)
student.subjects = ['Science', 'Maths']
else
student.subjects = ['SocialScience', 'English', 'Hindi']
students.push(student)
}
console.log(students)
await studentRegistry.addAll(students)
}