javascript - 位置 1 处的 JSON 中的意外标记
问题描述
我在 POST 方法上遇到了这个错误,但我很确定我做得对..
错误:
Unexpected token f in JSON at position 1
at JSON.parse
这是有道理的......好吧,'token f'是有道理的,这就是我的数据开头:field1:“##########”
这是我的 api 的 post 功能:
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,
})
关于我做错了什么的任何想法?
编辑:
这是我在 postNums 函数中将 req.boy 更改为 req.body.field1 后出现的错误:
{ 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' }
解决方案
弄清楚了。
我console.log(JSON.stringify(data)) 发现this的值为:“field1”:“field1”:“这里的电话号码”
它有两个现场的。
我通过说: JSON.stringify(data.field1) 而不是 JSON.stringify(data) 来修复它,尽管我认为它可以通过多种方式修复。
推荐阅读
- python - Django 错误“django.db.utils.ProgrammingError: subquery has too many columns”
- netbeans - 使用 netbeans 生成 Web 服务客户端时的相对路径
- python - 从 URL 获取 json 属性
- javascript - 赛普拉斯:自定义命令返回数组:如何循环运行测试套件?
- javascript - webpack中没有定义require,node环境
- c - c lang 中的 if 语句有问题
- vim - 如何使用 Ultisnip 获取降价片段以在 vim 中的数学中工作?
- python - AttributeError:尝试在线程中运行 TensorFlow 模型推理时,“密集”对象没有属性“内核”
- angular - 属性 'staticAlert' 没有初始化程序,也没有在 constructor.ts 中明确分配
- python-3.x - 需要 Selenium Webdriver Python 代码解释