await contract.submitTransaction('createCar', 'CAR12', 'Honda', 'Accord', 'Black', 'Tom');
import { TransitStatusEnum } from "../enum/transitstatusenum";
import { FreightContainer } from "./freightcontainer";
import { Company } from "./company";
export class Shipment {
public docType?: string;
public id: string;
public status: TransitStatusEnum;
public containers: FreightContainer[];
public shipper?: Company;
private totalShipmentValue?: number = 0;
constructor() {
if (!this.containers) {
console.log("Shipment does not (yet) contain any containers, shipmentValue is 0");
return;
}
for (let container of this.containers) {
this.totalShipmentValue += container.transitAgreement.cargoValue;
}
}
}
下面您将找到contract.submittransaction()
应该调用的函数,而不是createcar()
:
public async createShipment(ctx: Context, id: string, status: TransitStatusEnum, shipper: Company, containers?: FreightContainer[]) {
console.info('============= START : Create Shipment ===========');
const shipment: Shipment = {
docType: 'shipment',
id,
status,
containers,
shipper
};
await ctx.stub.putState(id, Buffer.from(JSON.stringify(shipment)));
console.info('============= END : Create Shipment ===========');
}
我可以为这些自定义类型创建工厂,并根据string
值生成类型,而不是传递给createshipment()
的类型,或者传递一个字符串化的对象(对象/数组、更多的对象/数组)。但我想知道(尤其是后者,它让我发冷)是否真的有必要。文档只提到这个contract.submittransaction()
函数,作为向区块链提交事务的一种方式。
我应该用我的工厂解决方案吗?是否有另一个函数,我可以使用它来提交使用类型的事务?或者这不是我应该构造我的链码的方式,我应该考虑完全简化它吗?
对于Hyperledger Fabric支持的每种语言,对象是不同的。例如,有可用于JavaScript(Node.js)、Java、Go和Python的SDK。此外,chaincode本身可以用JavaScript、Java或Go编写。
为了保持语言中立,参数的内部表示只是一个字节数组,这是在protobuf规范中定义的,Fabric用于内部通信。Fabric SDK还倾向于折腾到字符串定义的转换。您唯一的选择是使用字节或字符串。您可以使用自己的自定义解析,或者为了更高级的使用,可以使用某种类型的序列化协议(请参见比较)。但是,您的应用程序和chaincode都需要支持它。
当您需要发送对象时,我建议为您的情况创建一个chaincode函数,如createShipment
,它接受构造对象所需的参数。如果对象本身包含一个对象数组(FreightContainer
),则可以将其注册为一个对象(CreateFreightContainer
),该对象本身包含货件
的ID。
问题内容: 我正在使用Jest和Enzyme来测试React复选框组件。 这是我的测试: 但是在运行测试时出现此错误: 这是我的组件的输入: 我 想 那我需要通过一个事件作为第二个对象,但我不知道如何做到这一点。 谢谢 问题答案: 函数采用其他参数,这些参数将传递给事件处理程序。您可以嘲笑事件。例如:
我正在创建一个象棋引擎。我有一个接口,Rook,Bishop等。实现了这个类。我的电路板是一块[]阵列。假设白人球员想移动他的主教。我将目标的坐标和棋盘引用传递给bishop。Bishop检查,如果目的地在同一对角线上,那么它会询问董事会,在他的位置和目的地方块之间是否没有任何碎片。从面向对象的角度来看,这样做可以吗?非常感谢。
问题内容: 我在php中有对象,每个对象代表一个“项目”以及与之相关的所有信息。 当用户浏览页面时,这些对象应传递给javascript。理想情况下,镜像相同的结构,因此我可以使用Raphael在我的网站上将每个项目及其信息显示为单独的形状。 但是,如何将对象从php转换为javascript? 问题答案: 您可以将PHP对象转换为数组,然后使用JSON函数对其进行编码。之后,从JavaScrip
问题内容: 这里有角的新手。我试图找出将对象传递给指令时出了什么问题。 这是我的指令: 这是我调用指令的模板: 是一组对象。 当我运行此,日志,而日志罚款的范围,甚至有一个与所有的数据,我找孩子。 我不确定我在这里做错了什么,因为这种确切的方法以前对我有用。 编辑: 我已经用所有必需的代码创建了一个插件:http ://plnkr.co/edit/uJCxrG 如您所见,该作用域在范围中可用,但我
问题内容: 我正在将一个对象传递给我的控制器,如下所示: 我的控制器将其视为它正在寻找的对象: 我的问题是我只想再传递一个字符串。我知道我可以制作特定于视图的模型,但我想知道是否可以执行以下操作: 我没有运气就尝试了以下方法: 但是复杂对象只是作为null来的。有没有办法我也可以传递对象和字符串? 问题答案: 尝试将字符串项添加到已有的JSON中。不要对其进行字符串化,否则它将发送一个大字符串,您
问题内容: 我在task.py中有一个任务,如下所示: 我试图将请求对象直接从几个传递给任务,如下所示: 我收到一个无法序列化的错误,我猜是吗?我该如何解决?麻烦的是我也有文件上传对象..它不是所有简单的数据类型。 问题答案: 因为请求对象包含对不实际序列化的内容的引用(例如上载的文件或与请求关联的套接字),所以没有通用的方法来对其进行序列化。 相反,您应该拔出并传递需要的部分。例如,类似: