Пишу свой первый backend для базы данных RethinkDB и столкнулся с такой проблемой, что не могу разобрать запрос в bodyParser
Вот мой код:
const Koa = require('koa')
const logger = require('koa-morgan')
const bodyParser = require('koa-bodyparser')
const Router = require('koa-router')
const r = require('rethinkdb')
const server = new Koa()
const router = new Router()
const db = async() => {
const connection = await r.connect({
host: 'localhost',
port: '28015',
db: 'getteamDB'
})
return connection;
}
server.use(bodyParser());
server
.use(router.routes())
.use(logger('tiny')).listen(3001)
const getUsers = async(ctx, next) => {
await next()
// Get the db connection.
const connection = await db()
// Check if a table exists.
var exists = await r.tableList().contains('users').run(connection)
if (exists === false) {
ctx.throw(500, 'users table does not exist')
}
// Retrieve documents.
var cursor = await r.table('users')
.run(connection)
var users = await cursor.toArray()
ctx.type = 'json'
ctx.body = users
}
const insertUser = async(ctx, next) => {
await next()
// Get the db connection.
const connection = await db()
// Throw the error if the table does not exist.
var exists = await r.tableList().contains('users').run(connection)
if (exists === false) {
ctx.throw(500, 'users table does not exist')
}
let body = ctx.request.body || {}
console.log('получаем имя в запросе - ', body);
// Throw the error if no name.
if (body.name === undefined) {
ctx.throw(400, 'name is required')
}
// Throw the error if no email.
if (body.email === undefined) {
ctx.throw(400, 'email is required')
}
let document = {
name: body.name,
email: body.email
}
var result = await r.table('users')
.insert(document, {returnChanges: true})
.run(connection)
ctx.body = result
}
router
.get('/users', getUsers)
.post('/users', insertUser)
Метод getUsers работает нормально, возвращает пустой массив (БД пустая) Метод insertUser не может получить body из роута.
Подскажите, где ошибка
Консоль лог пишет {} А логгер пишет 'name is required'
Вместо:
let body = ctx.request.body || {}
использовал:
let body = ctx.request.query || {}
Помогло решение в этом топике на SO.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не могу понять, вот у нас есть функция-конструктор, дальше я создаю сам экземпляр этого конструктора
Использую для работы с MongoDB NodeJS на Windows Server 2012Бывало такое, что, при изменении настроек MongoDB, все базы данных удалялись, а бэкапов для восстановления...
Я знаю, что похожие вопросы задали ранееНо всё-таки мне хотелось бы узнать, можно ли написать функцию для калькулятора, опираясь на код, мной...