- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一批项目(单位)。我希望用户在一个批处理中指示他们想要的单位数,然后事务首先创建该批处理,然后创建所需的单位数。这是我的代码:
async function createBatch(batchTx) {
// get a code from the generator
let now = new Date();
let tokenData = {
brand: batchTx.brand,
unitCount: batchTx.unitCount,
created: now,
expiry: batchTx.expiryDate
}
let code = _generate_code(tokenData, 'Batch');
// create a new Batch token and add it to the registry
let factory = getFactory();
let token = factory.newResource('org.myOrganization', 'Token', String(code));
token.created = now;
token.updated = now;
let tokenAssetRegistry = await getAssetRegistry('org.myOrganization.Token');
await tokenAssetRegistry.add(token);
// create a batch using the token and code created above
let batch = factory.newResource('org.myOrganization', 'Batch', token.code);
batch.brand = batchTx.brand;
batch.expiryDate = batchTx.expiryDate;
batch.token = token;
batch.owner = batchTx.owner;
batch.created = now;
batch.updated = now;
let batchAssetRegistry = await getAssetRegistry('org.myOrganization.Batch');
await batchAssetRegistry.add(batch);
// update token with new batch
let tokenAssetRegistry1 = await getAssetRegistry('org.myOrganization.Token');
token.batch = batch;
tokenAssetRegistry1.update(token);
// CREATE UNITS
// get a code from the generator
let i;
for(i=0; i < batchTx.unitCount; i++) {
let unitTokenData = {
batch: batch,
created: now
};
let unitCode = _generate_code(unitTokenData, 'Unit');
// create a new Unit token and add it to the registry
let unitToken = factory.newResource('org.myOrganization', 'Token', String(unitCode));
unitToken.created = now;
unitToken.updated = now;
let tokenAssetRegistry2 = await getAssetRegistry('org.myOrganization.Token');
await tokenAssetRegistry2.add(unitToken);
// create units
let unit = factory.newResource('org.myOrganization', 'Unit', String(unitToken.code));
unit.batch = batch;
unit.token = unitToken;
unit.owner = batchTx.owner;
unit.created = now;
unit.updated = now;
let unitAssetRegistry = await getAssetRegistry('org.myOrganization.Unit');
await unitAssetRegistry.add(unit);
}
问题是批处理创建正常,但是当涉及到单位时,如果 batchTx.unitCount
为 3,它不会创建 3 个单位,它只会创建一个。 Composer 的工作方式有什么问题吗,或者我的某些 promise 解决方案是错误的?解决此问题的任何帮助将不胜感激
最佳答案
(更新):
您不能(在同一个交易中 - 上面)更新
一个新的token
Assets (在之前的add
之后) (add
) 尚未提交到账本。但是您可以简单地等待批处理“添加”完成,然后执行一个单数操作:
let tokenAssetRegistry = await getAssetRegistry('org.myOrganization.Token');
await tokenAssetRegistry.add(token);
您的代码在使用 new Date()
时是不确定的 - 它在背书同行之间不会相同(得到不同的结果)。看不到您是否在其他地方“削减”日期字符串(以减少不确定性因素)。为什么不使用“交易时间戳”(下面的链接)。
同样的不确定性适用于代码的 unitToken
部分。关于非确定性——建议看这个获取确定性日期时间的例子。 Getting timestamps in deterministic way in Hyperledger Composer transactions
我建议阅读这篇关于如何处理 for 循环中的 promise 的文章 -> https://medium.com/@antonioval/making-array-iteration-easy-when-using-async-await-6315c3225838管理返回的 promise (我想是的,这就是你的循环没有完成的原因)|。您的代码效率低下,如果它有任何值(value),您可以创建 units
作为资源数组,然后使用一个单一的 unitAssetRegistry.addAll()
- 在 for 循环之后完成。这方面的一个例子是在这个示例网络中 -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L191 (在这种情况下使用 updateArray
,以及注册表 .updateAll()
方法)。
关于javascript - Hyperledger composer 在 for 循环中创建多个 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51515888/
我使用以下命令使用 Composer 删除了一个包。 composer remove sjparkinson/static-review 以上命令从 composer.json 中删除条目文件但 co
我刚刚开始使用 Composer 功能,你告诉它查看本地目录的依赖关系,这样你就可以开发一个库和一些并行使用该库的东西,而不必一直推送到 git 来更新,这是惊人的。例如 "repositories"
composer 和有什么区别和 composer.phar ? 例子: composer install composer.phar install 我一直看到使用 composer.phar 编写
阅读docker-compose -h或this official manual的帮助将为我们提供--project-directory PATH选项 docker-compose [-f ...]
我已经使用他们的安装指南在我的 Linux/Apache 服务器上的根目录(这是默认选择)中成功安装了 Composer。到目前为止,一切都非常简单,除了我必须进行的一个 php.ini 调整( de
在我的 composer.json配置文件,我有: "require": { "zendframework/zend-log" : "~2.3", }, "require-dev": {
从 Composer 安装此软件包后,我想复制位于软件包内的一些文件。 实际上,我希望在从 Composer 安装或更新软件包后,将下载的软件包中可能存在的某个文件复制到另一个目录。我用 script
我对码头公司还是个新手。我使用的是最新版本的Python、Django和Docker。我已经在这个项目上工作了两周了,我已经创建了docker-compose.yml文件,并且已经构建了我的docke
我正在尝试使用 composer 安装一个 github 项目并得到以下错误 Composer [UnexpectedValueException]您的 github.com 的 Github oau
我开发 Symfony 包的工作流程如下: 安装 Symfony 为新包创建一个 git repo,在其中放置一个 composer.json 文件 需要顶级 composer.json 中的新包,使
我正在尝试使用 composer 安装 github 项目并收到以下错误 Composer [UnexpectedValueException] 您用于 github.com 的 Github oau
我们在项目中使用了 composer。当我开发和/或向项目提交任何内容时,我通常应该使用 composer install;更新依赖项只是偶尔进行。 我们还使用 https://github.com/
我在 youtube 上学会了这个抽屉 https://www.youtube.com/watch?v=JLICaBEiJS0&list=PLQkwcJG4YTCSpJ2NLhDTHhi6XBNfk9
我知道在 onClick 中调用可组合函数是不可能的。 @Composable 调用只能在 @Composable 函数的上下文中发生 撰写版本 - alpha06 但我坚持以下要求。 要求是, 在
这是我的 docker-compose.yml 文件: version: '3.1' services: a: image: tutum/hello-world b: imag
创建Asset实例时是否有auto_increment字段类型可用。例如, Assets ID 应该是自动生成的字段,应该在运行时创建,而不是在应用程序级别提及该值。我可以通过创建一个交易处理器函数来
在 Composer 项目中,我必须添加一个库,它没有 composer.json 并且不使用命名空间。因此,我调整了项目的 composer.json 以添加库: { [...] "
当 vendor 目录中已经有一些组件被下载时.. 在上面运行 install 以及运行 update 时有什么影响? 最佳答案 所以我有同样的问题,这是我发现的: composer install
尝试运行 composer install 时出现此错误。我已经运行了 composer update,我正在尝试使用这个最新的锁定文件进行安装。没有任何帮助。 Loading composer re
当我尝试做: $ sudo php composer.phar update 我收到此警告: Warning: This development build of composer is over 3
我是一名优秀的程序员,十分优秀!