I am creating my web application in Node Js and Express, and I need to fill out forms and send data from these forms to a separate file, but as I understand it, data from the forms is not transmitted to me.
I did this, I have forms in popup-add.hbs that I process in popup-add.js
const {Router} = require('express');
const Sign = require('../models/sign');
const router = Router();
router.get('/', (req, res) => {
res.render('popup-add', {
title: 'Добавление новой ЭП',
});
});
router.post('/', async (req, res) => {
const sign = new Sign(req.body.identificator, req.body.nameOwner, req.body.cabinet, req.body.provider, req.body.validityDateOpenKey, req.body.endDateOpenKey, req.body.validityDatePrivateKey, req.body.endDatePrivateKey, req.body.numberToken)
await sign.save();
res.redirect('/signs');
})
module.exports = router;
Then I created a model sign.js in which I describe a class for sign
class Sign {
constructor (identificator, nameOwner, cabinet, provider, validityDateOpenKey, endDateOpenKey, validityDatePrivateKey, endDatePrivateKey, numberToken) {
this.identificator = identificator
this.nameOwner - nameOwner
this.cabinet = cabinet
this.provider = provider
this.validityDateOpenKey = validityDateOpenKey
this.endDateOpenKey = endDateOpenKey
this.validityDatePrivateKey = validityDatePrivateKey
this.endDatePrivateKey = endDatePrivateKey
this.numberToken = numberToken
this.id = uuid()
}
toJSON() {
return {
identificator: this.identificator,
nameOwner: this.nameOwner,
cabinet: this.cabinet,
provider: this.provider,
validityDateOpenKey: this.validityDateOpenKey,
endDateOpenKey: this.endDateOpenKey,
validityDatePrivateKey: this.validityDatePrivateKey,
endDatePrivateKey: this.endDatePrivateKey,
numberToken: this.numberToken,
id: this.id
}
}
async save() {
const signs = await Sign.getAll()
signs.push(this.toJSON())
return new Promise((resolve, reject) => {
fs.writeFile(
path.join(__dirname, '..', 'data', 'signs.json'),
JSON.stringify(signs),
(err) => {
if(err) {
reject(err)
} else {
resolve()
}
}
)
})
}
static getAll() {
return new Promise((resolve, reject) => {
fs.readFile(
path.join(__dirname, '..', 'data', 'signs.json'),
'utf-8',
(err, content) => {
if(err) {
reject(err)
} else {
resolve(JSON.parse(content))
}
}
)
})
}}
And when processing filling out forms on the site, it gives me in the console
undefined:1
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at C:\Users\goncharovds\Desktop\Node\Node-Work\models\sign.js:63:38
←[90m at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3)←[39m
[nodemon] app crashed - waiting for file changes before starting...
I thought about it for a long time, but I could not understand why the content is not transferred in JSON
Aucun commentaire:
Enregistrer un commentaire