Server-created storage object with 'Owner Read' permission cannot be read from client

I’ve created a system where I can transfer items between players, and I’m experiencing an issue with reading the items back from the storage engine. The storage items are created authoritatively using the typescript framework in a custom RPC, which is invoked by another player:

let write: nkruntime.StorageWriteRequest = {
    collection: 'inventory',
    userId: recipient,
    key: key,
    permissionRead: 1, // Owner Read
    permissionWrite: 0, // No Write
    value: {...}
}

The object is attached to the recipient just fine, but I would like to be able to use the Unity3D client framework for reading the storage:

client.ListStorageObjectsAsync(conn.session, "inventory", 100);

However, no objects are returned:

If I enter the dashboard and change the read permission to ‘Public Read’ like so:

I get the objects just fine:

Shouldn’t the userId property combined with permissionRead: 1 in the write request make it possible for the entry to also be read by the client framework?

  • Nakama 3.18.0 (via Docker), TS
  • Unity3D SDK: 3.9.0

Edit: disregard this post… I should’ve used ListUsersStorageObjectsAsync instead… Still getting used to the API :roll_eyes:
Keeping the remaining post for reference in case anybody else runs into the issue:

I looked into this a bit more.

The dotnet client framework does not provide a way to pass along the userId, and instead always sends string.Empty:

I’ve tried making a local build that exposes the userId as a parameter, and the storage request now finds the items while the read permission is set to 1.

1 Like