Неожиданный токен в JSON на позиции 1 - PullRequest
0 голосов
/ 31 августа 2018

Я получаю эту ошибку в методе POST, но я уверен, что я делаю это правильно ..

Ошибка:

Unexpected token f in JSON at position 1
at JSON.parse

Это имеет смысл, вроде ... ну, 'токен f' имеет смысл, вот с чего мои данные начинаются: field1: "##########"

вот функция сообщения моего API:

var putNewNums = (data) => {
    fetch('/getnums', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data),
    })
    .then(res => res.send())
}

который идет по этому маршруту:

app.use('/getnums', getRouter)

, который идет к этому контроллеру:

router.post('/', mainController.postNums)

, который выглядит так:

postNums: (req, res, next) => {
    numSchem.create({
        field1: req.body.field1
    })
    .then(data => res.status(200).json(data))
    .catch(e => {
        req.error = e
        console.log(e)
        next()
    })
}

не совсем уверен, где моя ошибка ... я посылаю ей строку, как хочет моя схема:

const nums = mongoose.Schema ({
    field1: String,
})

Есть идеи, что я делаю не так?

EDIT:

вот ошибка, которую я теперь получаю после изменения req.boy на req.body.field1 в моей функции postNums:

{ ValidationError: numSchema validation failed: field1: Cast to String failed for value "{ field1: '8773238968' }" at path "field1"
at ValidationError.inspect (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/error/validation.js:59:24)
at formatValue (util.js:400:38)
at inspect (util.js:294:10)
at format (util.js:161:12)
at Console.log (console.js:130:21)
at numSchem.create.then.catch.e (/Users/reid/Desktop/DupeFinder/server/controllers/main.js:47:12)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
  errors: 
   { field1: 
      { CastError: Cast to String failed for value "{ field1: '8773238968' }" at path "field1"
    at new CastError (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/error/cast.js:29:11)
at model.$set (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/document.js:879:7)
at model._handleIndex (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/document.js:688:14)
at model.$set (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/document.js:645:22)
at model.Document (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/document.js:112:12)
at model.Model (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/model.js:69:12)
at new model (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/model.js:4344:13)
at toExecute.push.callback (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/model.js:2479:22)
at /Users/reid/Desktop/DupeFinder/server/node_modules/async/internal/parallel.js:31:39
at eachOfArrayLike (/Users/reid/Desktop/DupeFinder/server/node_modules/async/eachOf.js:65:9)
at exports.default (/Users/reid/Desktop/DupeFinder/server/node_modules/async/eachOf.js:9:5)
at _parallel (/Users/reid/Desktop/DupeFinder/server/node_modules/async/internal/parallel.js:30:5)
at parallelLimit (/Users/reid/Desktop/DupeFinder/server/node_modules/async/parallel.js:88:26)
at utils.promiseOrCallback.cb (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/model.js:2489:5)
at Promise (/Users/reid/Desktop/DupeFinder/server/node_modules/mongoose/lib/utils.js:243:5)
at new Promise (<anonymous>)
    message: 'Cast to String failed for value "{ field1: \'8773238968\' }" at path "field1"',
    name: 'CastError',
    stringValue: '"{ field1: \'8773238968\' }"',
    kind: 'String',
    value: [Object],
    path: 'field1',
    reason: [Object] } },
  _message: 'numSchema validation failed',
  name: 'ValidationError' }

1 Ответ

0 голосов
/ 31 августа 2018

Разобрался.

Я console.log (JSON.stringify (data)) и обнаружил, что это значение: «field1»: «field1»: «номер телефона здесь»

У него было два полевых.

Я исправил это, сказав: JSON.stringify (data.field1), а не JSON.stringify (data), хотя я думаю, что это можно исправить несколькими способами.

...