Попытка обновить два ресурса с одной транзакцией в детской площадке / проводнике - PullRequest
0 голосов
/ 02 мая 2019

У меня проблемы с обновлением значения флага asset2. Транзакция актива 1 выполнена успешно, транзакция актива 2 проигнорирована. Я развиваюсь в детской площадке. Есть идеи?

Я попытался написать второе обновление для asset2 в качестве подпрограммы. Ошибки не выданы, транзакция выполняет обновление asset1 и игнорирует вызов для обновления asset2. Это происходит как в Playground, так и в Composer Rest Server Explorer.

/*
* @param {************.asset1Update} transact
* @transaction 
*/
async function asset1Update(transact) {

    const asset1Reg = await getAssetRegistry('com.saberdata.printChain.Order'); const userReg = await getParticipantRegistry('com.saberdata.printChain.User'); const fileReg = await getAssetRegistry('com.saberdata.printChain.StoredFile'); const asset2Reg = await getAssetRegistry('com.saberdata.printChain.Project');

    try { // Verify asset1Id provided exists.

        const asset1Exists = await asset1Reg.exists(transact.asset1Id);
        if (!asset1Exists) {
            let errmes = 'asset1Id ' + transact.asset1Id + ' not found.';
            throw ('Error : ' + errmes);
        }

        const asset2Exists = await asset2Reg.exists(transact.asset2);
        if (!asset2Exists) {
            let errmes = 'asset2 ' + transact.asset2 + ' not found.';
            throw ('Error : ' + errmes);
        }

        const userExists = await userReg.exists(transact.projectCreator);
        if (!userExists) {
            let errmes = 'projectCreator ' + transact.projectCreator + ' not found.';
            throw ('Error : ' + errmes);
        }

        const fileExists = await fileReg.exists(transact.file);
        if (!fileExists) {
            let errmes = 'file ' + transact.file + ' not found.';
            throw ('Error : ' + errmes);
        }



        //these cannot be changed
        if (transact.asset1Id.length) {
            let errmes = 'Some fields may not be updated';
            throw ('Error : ' + errmes);
        }
    } catch (err) {
        throw new Error('From CRS -- asset1Update: ' + err);
    }
    // Update asset1 

    let asset1Old = await asset1Reg.get(transact.asset1Id);

    asset1Old.orderStatus = transact.orderStatus;
    asset1Old.orderName = transact.orderName;
    asset1Old.fileName = transact.fileName;
    asset1Old.creationTime = transact.creationTime;
    asset1Old.orderQuantity = transact.orderQuantity;
    asset1Old.completedCount = transact.completedCount;
    asset1Old.materialType = transact.materialType;
    asset1Old.materialAmtReqd = transact.materialAmtReqd; asset1Old.estCompletionTime = transact.estCompletionTime;

    const currentPart = getCurrentParticipant();

    try {

        let origasset2 = await asset2Reg.get(transact.project)
        origasset2.flag = false;
        origasset2.changedBy = currentPart;
        origasset2.changedDate = new Date(Date.now());
    } catch (e) {

        throw new Error('From Revoke(): ' + e);
    }

    await asset2Reg.update(origAsset2);

    return await asset1Reg.update(asset1Old);
}
...