【发布时间】:2022-10-04 20:04:35
【问题描述】:
我同时使用 Accounts 和 Tokens SDK。使用流创建 NFT 后,我需要列出该帐户在后端的所有 NFT。
CreateNFTHouseTokenFlow.kt
@StartableByRPC
class CreateNFTHouseTokenFlow(
private val noOfBedRooms: Short,
private val address: String,
private val price: Int,
private val icon: String,
private val name: String,
private val holder: PublicKey
) : FlowLogic<Unit>() {
@Suspendable
@Throws(FlowException::class)
override fun call() {
val houseTokenState = HouseTokenState(/* ...arguments */)
val transactionState = houseTokenState.withNotary(notary)
subFlow(CreateEvolvableTokens(transactionState))
val issuedHouseToken = houseTokenState
.toPointer<HouseTokenState>()
.issuedBy(ourIdentity)
.heldBy(AnonymousParty(holder))
subFlow(IssueTokensFlow(issuedHouseToken))
}
}
现在,在后台:Controller.kt
@GetMapping("/tokens/{user}")
fun getUserTokens(@PathVariable user: UUID): ResponseEntity<String> {
return try {
val criteria = QueryCriteria
.VaultQueryCriteria()
.withExternalIds(listOf(user))
val userNFTs = proxy
.vaultQueryByCriteria(criteria, NonFungibleToken::class.java)
.states
ResponseEntity
.status(HttpStatus.ACCEPTED)
.body("tokens: $userNFTs")
} catch (e: Exception) {
ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body("exception: ${e.message}")
}
}
上面的代码返回一个空数组。这个问题似乎与标准有关。出于某种原因,Corda 无法将 withExternalIds(listOf(user)) 方法与 NonFungibleToken::class.java 方法结合使用。如果我删除条件,Corda 可以获取所有 NonFungibleToken 令牌(甚至是其他用户拥有的令牌)。
【问题讨论】:
标签: corda