У меня есть некоторый код в express, который создает документ Mon goose из значений, отправленных в теле. Я пытаюсь отправить обратно JSON результаты как для успешных, так и для неудачных (проверка происходит с понедельника goose). Но res. json () вообще не работает.
Вместо объекта, который я пытаюсь отправить, результатом является последнее значение, отправленное с помощью res.send (), даже когда res. отправить больше нигде в коде. Я получаю только тот текст, который использовался в последний раз, в обоих случаях, поэтому их значения не отличаются. Как видите, я пытался выполнить res.send () с «success» и «no success», и последний вызов был «success», поэтому теперь, как при успешном, так и при неудачном завершении, он всегда возвращает «success» вместо JSON Я хочу.
Если я изменяю статус HTTP перед вызовом json (), отправляется правильный статус, но значение все равно неверное.
router.post('/register', function (req, res, next) {
const user = new User(req.body);
user.save().then((doc) => {
console.log(doc);
console.log('success');
// res.json({success: true});
res.send('success');
}).
catch ((err) => {
console.log('error');
// res.json({error: 'ikke'});
res.send('no success');
});
});
Приложение. js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var lessMiddleware = require('less-middleware');
var logger = require('morgan');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/kb-skills', {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.set('useCreateIndex', true);
mongoose.Promise = Promise;
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(lessMiddleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;