Skip to content

Commit 69cb833

Browse files
Merge pull request #1 from surveyjs/readme-and-stuff
Update README and code
2 parents 06bfa7c + 4b23830 commit 69cb833

File tree

9 files changed

+138
-984
lines changed

9 files changed

+138
-984
lines changed

README.md

+34-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SurveyJS + NodeJS + MongoDB Demo Example
22

3-
This demo shows how to integrate [SurveyJS](https://surveyjs.io/) components with a NodeJS backend with MongoDB database as a storage.
3+
This demo shows how to integrate [SurveyJS](https://surveyjs.io/) components with a NodeJS backend using a MongoDB database as a storage.
44

55
[View Demo Online](https://surveyjs-nodejs.azurewebsites.net/)
66

@@ -10,18 +10,41 @@ This demo must not be used as a real service as it doesn't cover such real-world
1010

1111
## Run the Application
1212

13-
Install [NodeJS](https://nodejs.org/) on your machine.
14-
Install [Docker Desktop](https://docs.docker.com/desktop/) on your machine.
15-
After that, run the following commands:
13+
1. Install [NodeJS](https://nodejs.org/) and [Docker Desktop](https://docs.docker.com/desktop/) on your machine.
1614

17-
```bash
18-
git clone https://github.com/surveyjs/surveyjs-nodejs-mongo.git
19-
cd surveyjs-nodejs-mongo
20-
docker compose up -d
21-
```
15+
2. Run the following commands:
2216

23-
Open http://localhost:9080 in your web browser.
17+
```bash
18+
git clone https://github.com/surveyjs/surveyjs-nodejs-mongodb.git
19+
cd surveyjs-nodejs-mongodb
20+
docker compose up -d
21+
```
22+
23+
3. Open http://localhost:9080 in your web browser.
2424

2525
## Client-Side App
2626

27-
The client-side part is the `surveyjs-react-client` React application. The current project includes only the application's build artifacts in the /public folder. Refer to the [surveyjs-react-client](https://github.com/surveyjs/surveyjs-react-client) repo for full code and information about the application.
27+
The client-side part is the `surveyjs-react-client` React application. The current project includes only the application's build artifacts in the [public](./public/) directory. Refer to the [`surveyjs-react-client`](https://github.com/surveyjs/surveyjs-react-client) repo for full code and information about the application.
28+
29+
## Integrate SurveyJS with MongoDB
30+
31+
SurveyJS communicates with any database using JSON objects that contain either survey schemas or user responses. A MongoDB database should have two collections to store these objects: `surveys` and `results`. You can refer to the following file to view a code example of how to create them: [`surveyjs-init.js`](mongo/entrypoint/surveyjs-init.js). The diagram below shows the structure of these collections:
32+
33+
![SurveyJS: The structure of database collections](https://github.com/surveyjs/surveyjs-nodejs-postgresql/assets/18551316/176a0e1d-963c-4ec0-a11d-33631aa05770)
34+
35+
To modify data in the `surveys` and `results` collections, you need to implement several JavaScript functions. According to the tasks they perform, these functions can be split into three modules:
36+
37+
- **Query builder**
38+
JS functions that construct CRUD queries (see the [`nosql-crud-adapter.js`](express-app/db-adapters/nosql-crud-adapter.js) file).
39+
40+
- **Query runner**
41+
JS functions that establish connection with a database to run the queries (see the [`mongo.js`](express-app/db-adapters/mongo.js) file).
42+
43+
- **Survey storage**
44+
JS functions that provide an API for working with survey schemas and user responses (see the [`survey-storage.js`](express-app/db-adapters/survey-storage.js) file). This API is used by the NodeJS application router (see the [`index.js`](express-app/index.js) file).
45+
46+
These modules interact with each other as shown on the following diagram:
47+
48+
![SurveyJS MongoDB Integration](https://github.com/surveyjs/surveyjs-nodejs-postgresql/assets/18551316/b0b13d77-f0a4-44a4-a34d-6c318d1f559b)
49+
50+
If you want to integrate SurveyJS with other databases, you can modify or replace the query builder and query runner without changing the survey storage module. This approach is applied to PostgreSQL integration in the following repository: [`surveyjs-nodejs-postgresql`](https://github.com/surveyjs/surveyjs-nodejs-postgresql).

0 commit comments

Comments
 (0)