JavaScript
This section will walk you through how to use FactCast from an application programmers perspective.
Please note, that this is a low-level API. If you’re a Java Programmer and want to use a higher-level API or explore what you can do with FactCast in a more approachable way first, you should have a look at the Factus section.
1 - nodeJS GRPC Producer
Producing Facts via nodeJS is very simple due to the available
gRPC NPM Module. It will generate a stub constructor called RemoteFactStore
from our proto file.
const uuidV4 = require("uuid/v4");
const grpc = require("grpc");
const protoDescriptor = grpc.load("./FactStore.proto");
const RemoteFactStore =
protoDescriptor.org.factcast.grpc.api.gen.RemoteFactStore;
// store allows us to publish, subscribe and fetchById (see proto file)
const store = new RemoteFactStore(
"localhost:9090",
grpc.credentials.createInsecure()
);
store.publish(
[
{
header: JSON.stringify({
id: uuidV4(),
ns: "myapp",
}),
payload: JSON.stringify({
foo: Date.now(),
}),
},
],
(err, feature) => {
if (err) {
console.log(err);
}
}
);
See the
Facts page for detailed information about all possible and required header fields.
2 - nodeJS GRPC Consumer
const grpc = require("grpc");
const protoDescriptor = grpc.load("./FactStore.proto");
const RemoteFactStore =
protoDescriptor.org.factcast.grpc.api.gen.RemoteFactStore;
const store = new RemoteFactStore(
"localhost:9090",
grpc.credentials.createInsecure()
);
const subscription = store.subscribe({
json: JSON.stringify({
continuous: true,
specs: [
{
ns: "myapp",
},
],
}),
});
subscription.on("data", (fact) => {
console.log(fact);
});