Skip to content

Commit dd2369b

Browse files
Merge pull request #126 from dolencd/master
Fixed gRPC state.set with plain JS object
2 parents 83752c4 + 784eef6 commit dd2369b

File tree

4 files changed

+412
-173
lines changed

4 files changed

+412
-173
lines changed

src/implementation/Client/GRPCClient/state.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ export default class GRPCClientState implements IClientState {
2121
for (const stateObject of stateObjects) {
2222
const si = new StateItem();
2323
si.setKey(stateObject.key);
24-
si.setValue(Buffer.from(stateObject.value, "utf-8"));
24+
si.setValue(Buffer.from(typeof stateObject.value === "object" ? JSON.stringify(stateObject.value) : stateObject.value.toString(), "utf-8"));
2525
stateList.push(si);
2626
}
27-
27+
2828
const msgService = new SaveStateRequest();
2929
msgService.setStoreName(storeName);
3030
msgService.setStatesList(stateList);
@@ -47,6 +47,7 @@ export default class GRPCClientState implements IClientState {
4747
msgService.setStoreName(storeName);
4848
msgService.setKey(key)
4949

50+
5051
// @todo: https://docs.dapr.io/reference/api/state_api/#optional-behaviors
5152
// msgService.setConsistency()
5253

@@ -76,7 +77,6 @@ export default class GRPCClientState implements IClientState {
7677
msgService.setStoreName(storeName);
7778
msgService.setKeysList(keys);
7879
msgService.setParallelism(parallelism);
79-
8080
// @todo: https://docs.dapr.io/reference/api/state_api/#optional-behaviors
8181
// msgService.setConsistency()
8282

@@ -90,11 +90,20 @@ export default class GRPCClientState implements IClientState {
9090
// https://docs.dapr.io/reference/api/state_api/#http-response-2
9191
const items = res.getItemsList();
9292

93-
return resolve(items.map(i => ({
94-
key: i.getKey(),
95-
data: Buffer.from(i.getData()).toString(),
96-
etag: i.getEtag()
97-
})));
93+
return resolve(items.map(i => {
94+
const resDataStr = Buffer.from(i.getData()).toString()
95+
let data: string;
96+
try {
97+
data = JSON.parse(resDataStr);
98+
} catch(e) {
99+
data = resDataStr;
100+
}
101+
return {
102+
key: i.getKey(),
103+
data,
104+
etag: i.getEtag()
105+
}
106+
}));
98107
});
99108
})
100109
}

src/types/KeyValuePair.type.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export type KeyValuePairType= {
22
key: string;
3-
value: string;
3+
value: any;
44
}

0 commit comments

Comments
 (0)