Я настраиваю небольшое приложение для распознавания лиц с Clarifi API, я использую сервер express и тестирую как go с Почтальоном. У меня есть четыре конечные точки:
- Вход - это нормально работает
- Регистрация - это тоже нормально работает
- Профиль - это тоже нормально работает
- Изображение - вот где я отклеиваюсь
Это код моего файлового сервера. js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
const database = {
users: [
{
id: '123',
name: 'David',
email: 'david@david.com',
password: 'cookies',
entries: 0,
joined: new Date()
},
{
id: '124',
name: 'John',
email: 'john@david.com',
password: 'apples',
entries: 0,
joined: new Date()
}
]
}
app.get('/', (req, res) => {
res.send(database.users)
})
app.post('/signin', (req, res) => {
if (req.body.email === database.users[0].email &&
req.body.password === database.users[0].password){
res.json('success')
} else {
res.status(400).json('error logging in');
}
})
app.post('/register', (req, res) => {
const { email, name, password } = req.body;
database.users.push({
id: '125',
name: name,
email: email,
password: password,
entries: 0,
joined: new Date()
})
res.json(database.users[database.users.length-1])
})
app.get('/profile/:id', (req, res) => {
const { id } = req.params;
let found = false;
database.users.forEach(user => {
if (user.id === id) {
found = true;
return res.json(user);
}
})
if (!found) {
res.status(404).json('User not found');
}
})
app.post('/image', (req, res) => {
const {id} = req.body;
let found = false;
database.users.forEach(user => {
if(user.id === id) {
found = true;
user.entries++
return res.json(user.entries);
}
})
if(!found){
res.status(400).json('NOT FOUND');
}
})
app.listen(3000, ()=> {
console.log('app is running on port 3000');
})
Все работает нормально, пока я не добавлю это часть,
app.post('/image', (req, res) => {
const {id} = req.body;
let found = false;
database.users.forEach(user => {
if(user.id === id) {
found = true;
user.entries++
return res.json(user.entries);
}
})
if(!found){
res.status(400).json('NOT FOUND');
}
})
Я знаю, что это почти такая же функция, как у профиля, и я в конечном итоге вытащу его и создам для использования везде, но главное здесь - заставить его работать в финале конечная точка создания записей для каждого случая, когда изображение загружается для каждого пользователя
Как я уже говорил, все работает в Postman вплоть до добавления этой части кода, плюс я использую код VS и ошибок нет в коде и там все проверено, я также запустил npm start в терминале и получил правильный ответ приложения, работающего на порту 3000, прежде чем я попробую почтальон.
Ниже приведена копия основного сообщения / ошибки от Почтальона
<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>SyntaxError: Unexpected token } in JSON at position 16<br> at JSON.parse (<anonymous>)<br> at parse (C:\Users\djaad\Desktop\smart-brain-api\node_modules\body-parser\lib\types\json.js:89:19)<br> at C:\Users\djaad\Desktop\smart-brain-api\node_modules\body-parser\lib\read.js:121:18<br> at invokeCallback (C:\Users\djaad\Desktop\smart-brain-api\node_modules\raw-body\index.js:224:16)<br> at done (C:\Users\djaad\Desktop\smart-brain-api\node_modules\raw-body\index.js:213:7)<br> at IncomingMessage.onEnd (C:\Users\djaad\Desktop\smart-brain-api\node_modules\raw-body\index.js:273:7)<br> at IncomingMessage.emit (events.js:317:22)<br> at endReadableNT (_stream_readable.js:1215:12)<br> at processTicksAndRejections (internal/process/task_queues.js:84:21)
Понятия не имею, что может быть причиной этого, пожалуйста вы можете помочь?
Спасибо,
Дэвид.