JSON.parse получаю ошибку Unexpected token o in JSON

462
10 февраля 2017, 05:43

Пытаюсь вернуть через REST API данные в JSON.

Node JS + Express Js

server.js

var userController = require('./UserController');
app.route('/api/users')
  .get(userController.getUsers);

UserController.js

var userModel = require('./User');
function getUsers() {
  return JSON.parse(userModel);
}

User.js

var users = [];
users.push({id: "1", username: "regular", password: "user", role: "1"});
users.push({id: "2", username: "premium", password: "user", role: "2"});

Ошибка

undefined:1
[object Object],[object Object]
 ^
SyntaxError: Unexpected token o in JSON at position 1

Знаю, что там внутри объекты, но как в таком случае вернуть клиенту JSON?

Answer 1

У вас users не json, а массив. Его уже не нужно парсить:

var userModel = require('./User');
function getUsers() {
  return userModel;
}
Answer 2

Как вариант - проверять приходит ли модель уже в виде JSON. Если да, то возвращать сразу. Если нет, то парсить и возвращать.

function getUsers() {
  return typeof userModel === "string" ? 
     JSON.parse(userModel)
     :
     userModel;
}
READ ALSO
Сделать горизонтальную прокрутку в fotorama

Сделать горизонтальную прокрутку в fotorama

ЗдравствуйтеИспользую плагин fotorama

280
Отображение пользователей в FullCalendar

Отображение пользователей в FullCalendar

Пытаюсь кастомизировать календарь в такой как на скрине:

249
Ruby on rails MVC

Ruby on rails MVC

Добрый день! Никак не могу реализовать добавление задачи с возможностью выбора раздела для этой задачиЕсть 2 модели:

296
Почему не включается locale('ru') в moment.js

Почему не включается locale('ru') в moment.js

Включил в проект ссылки на momentjs и русскую локализацию

347