Store Survey Results
Survey results are JSON objects that you can store in your own database. For information on backend architecture for SurveyJS integration, refer to the following help topic:
Integrate SurveyJS Libraries with Backend
On the client side, handle the onComplete event raised in response to a click on the Complete button to send survey results to your server:
import { Model } from "survey-core"; const surveyJson = { ... }; const survey = new Model(surveyJson); survey.onComplete.add((survey, options) => { options.showSaveInProgress(); const dataObj = { postId: surveyPostId, surveyResult: resultAsStr }; const dataStr = JSON.stringify(dataObj); const headers = new Headers({ "Content-Type": "application/json; charset=utf-8" }); fetch(surveyServiceUrl + "/post/", { method: "POST", body: dataStr, headers: headers }).then(response => { if (!response.ok) { throw new Error("Could not post the survey results"); } // Display the "Success" message (pass a string value to display a custom message) options.showSaveSuccess(); // Alternatively, you can clear all messages: // options.clearSaveMessages(); }).catch(error => { // Display the "Error" message (pass a string value to display a custom message) options.showSaveError(); console.log(error); }); }); The onComplete event handler only sends survey results in JSON format to your server. The way you store them fully depends on your backend.
If you are running a NodeJS server, you can check survey results before saving them. On the server, create a SurveyModel and call its clearIncorrectValues(true) method. This method verifies a survey result JSON object against the survey JSON schema and deletes property values that cannot be assigned to a question (such as choice options unlisted in a choices array) and property values that do not correspond to any question or calculated value.
// Server-side code for a NodeJS backend import { Model } from "survey-core"; const surveyJson = { ... }; const survey = new Model(surveyJson); survey.data = initialSurveyResultJson; survey.clearIncorrectValues(true); const correctSurveyResultJson = survey.data;