Web3js

通過同步作業(外掛)添加表格時未觸發 Moralis.Cloud.beforeSave

  • July 9, 2021

不久前我遇到了這個問題,它讓我陷入了困境。

通過同步作業(外掛)添加表格時,是否不會觸發 Cloud Functions 中的“Moralis.Cloud.beforeSave”?

當我只使用 web3 UI 執行 beforeSave 時,它可以工作。當我刪除所有表並手動執行同步作業以創建新表時,beforeSave 沒有執行以添加其他使用者和令牌欄位:

// link sale and item data Polygon
Moralis.Cloud.beforeSave("ItemsForSalePolygon", async (request) => {
 const query = new Moralis.Query("PolygonNFTOwners")
 query.equalTo("token_address", request.object.get('tokenAddress'))
 query.equalTo("token_id", request.object.get('tokenId'))
 const object = await query.first()
 if (object){
     const owner = object.attributes.owner_of
   const userQuery = new Moralis.Query(Moralis.User)
     userQuery.equalTo("accounts", owner)
   const userObject = await userQuery.first({useMasterKey:true})
   if (userObject){
       request.object.set('user', userObject);
   }
   request.object.set('token', object);
 }
})

或者同步作業是否以某種方式記憶體?

出於性能原因,歷史同步使用批量插入。這種優化的副作用是不會為這些插入觸發觸發器。這解釋了您觀察到的觸發器在實時插入時觸發但在同步歷史數據時未觸發的行為。

您可以創建作業或云函式並手動執行它以處理初始歷史同步後需要進行的任何初始化

引用自:https://ethereum.stackexchange.com/questions/103241