This Plugin adapts parse-server to support streams
Since parse server is runs on express, this plugin is a middleware that can be added to the express app.
First add parse-server to your express app:
yarn add parse-server
Then add moralis parse server plugin:
yarn add @moralisweb3/parse-server
Initialize parse server in your express app:
import ParseServer from 'parse-server';
import config from './config';
export const parseServer = new ParseServer({
databaseURI: config.DATABASE_URI,
cloud: config.CLOUD_PATH,
appId: config.APPLICATION_ID,
masterKey: config.MASTER_KEY,
serverURL: config.SERVER_URL,
});
Then add the plugin to your express app:
import { streamsSync } from '@moralisweb3/parse-server';
the initializeStreams function takes the following options:
- the parse server instance
- Other options
interface StreamOptions {
webhookUrl?: string;
apiKey: string;
}
apiKey
: Your Moralis API keywebhookUrl
- the url of choice to receive the stream data (optional). default path is/streams-webhook
import Moralis from 'moralis';
import express from 'express';
import config from './config';
import { streamsSync } from '@moralisweb3/parse-server';
const expressApp = express();
Moralis.start({
apiKey: config.MORALIS_API_KEY,
});
expressApp.use(express.urlencoded({ extended: true }));
expressApp.use(express.json());
expressApp.use(cors());
expressApp.use(
streamsSync(parseServer, {
apiKey: config.MORALIS_API_KEY,
webhookUrl: '/streams-webhook',
}),
);
expressApp.use(`/${config.SERVER_ENDPOINT}`, parseServer.app);
expressApp.use(errorHandler);
app.listen(config.PORT, () => {
console.log(`${config.APP_NAME} is running on port ${config.PORT}`);
});
The endpoint to receive webhooks is YOUR_EXPRESSAPP_URL/SET_WEBHOOKURL
. This is the URL that you should use when setting up a stream.
After you have configured the plugin and created a stream you can see the data in the dashboard. Note that the stream tag will be concatenated with Txs
and Logs
meaning if you have a tag called "MyStream" you will have two collections in DB called "MyStreamTxs" and "MyStreamLogs", which will contain the transactions and logs respectively.
Full example can be found here