如何使用查询或 js 从 Hyperledger Composer 中提取唯一数据

How do I extract unique data from Hyperledger Composer using query or js

我想从 Hyperledger Composer 的重复数据中获取唯一数据。我怎样才能做到这一点?

假设我有这样的数据

     [
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "1",
 "dataType" : "in",
 "productName": "A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "2",
 "dataType": "in",
 "productName": “A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "BABA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "3",
 "dataType": "out",
 "productName": "C",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "4",
 "dataType": "in",
 "productName": "C",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "5",
 "dataType": "out",
 "productName": "B",
 "quantity": 1,
 "country": "Unknown",
 "owner": "BABA"
}
] 

我想要得到的是唯一产品名称的列表。

所以我想要的结果可能是这样的

 [
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "1",
 "dataType" : "in",
 "productName": "A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "3",
 "dataType": "out",
 "productName": "C",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "5",
 "dataType": "out",
 "productName": "B",
 "quantity": 1,
 "country": "Unknown",
 "owner": "BABA"
}
] 

我不太关心顺序。我只想知道我的数据库中有什么产品名称。

我认为这需要与 logic.js 部分有关。我可以使用 post 方法进行查询并获取数据。但我不知道如何使用 logic.js

我不知道如何从 logic.js 获取数据。官方页面的示例仅删除或交易。他们没有 return 新数据。

感谢任何帮助。我想知道如何使用js发送数据。

从您的数据中获取唯一产品名称的 js 代码为

const data =[
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "1",
 "dataType" : "in",
 "productName": "A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "3",
 "dataType": "out",
 "productName": "A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "5",
 "dataType": "out",
 "productName": "B",
 "quantity": 1,
 "country": "Unknown",
 "owner": "BABA"
}
];

const distinctProductName = [...new Set(data.map(x => x.productName))];

您将在 distinctProductName 中拥有独特的 ProductName,但您不会拥有产品的详细信息。从你的问题来看,也觉得没有必要。如果你也需要详细信息,你可以这样做

const data =[
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "1",
 "dataType" : "in",
 "productName": "A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "3",
 "dataType": "out",
 "productName": "A",
 "quantity": 1,
 "country": "Unknown",
 "owner": "GAGA"
},
{
 "$class": "org.stock.mynetwork.Commodity",
 "time": "5",
 "dataType": "out",
 "productName": "B",
 "quantity": 1,
 "country": "Unknown",
 "owner": "BABA"
}
];

const result = Array.from(new Set(data.map(x => x.productName)))
                    .map(productName => {
                             return{
                                    productName: productName,
                                    dataType : data.find(x => x.productName ===productName).dataType
                                   //you can obtain other values as I obtained dataType
                                   };
                              });

您将在 result 中获得您的数据。