Я должен реализовать HTTP POST
запрос. У меня есть документ (id - это заголовок документа, а result1 хранит содержимое документа) в моей базе данных, который мне нужен POST
. Я создал ресурс (статус 201), но мне нужно показать поле href вновь созданного ресурса на веб-странице.
Когда я пытаюсь сделать это с помощью res.json (res.json(obj.Link);)
. Выдает ошибку:
Error: Can't set headers after they are sent.
Мне нужна помощь в печати этого поля href.
С errorWrap () проблем нет, и маршрутизаторы уже установлены.
function doAdd(app){
return errorWrap(async function(req, res) {
try {
//fething the data
const id = req.params.id;
const result1 = await app.locals.finder.docContent(id);
let obj={
Content: result1,
Link:[{rel : "self",
href : baseUrl(req,DOCS)}]
};
// this is for posting:
obj = req.body;
let id1 =JSON.stringify(id);
let results = await app.locals.finder.addContent(id1,result1);
// res.append("obj.Link");
res.append('Location', baseUrl(req) + '/' + obj.id );
res.json(obj.Link) // gives an error
res.sendStatus(CREATED);
}
catch(err) {
const mapped = mapError(err);
res.status(mapped.status).json(mapped);
}
});
}
/** Return base URL of req for path.
* Useful for building links; Example call: baseUrl(req, DOCS)
*/
function baseUrl(req, path='/') {
const port = req.app.locals.port;
const url = `${req.protocol}://${req.hostname}:${port}${path}`;
return url;
}