在JSON的第6个位置出现了意外的令牌"d"
在JSON的第6个位置出现了意外的令牌"d"
我正在尝试使用mongoosejs、mongodb和nodejs进行crud操作。\n当我尝试进行post请求时,我收到了一个错误消息(\"JSON中位置6出现意外的令牌d\"),但我无法弄清楚为什么会出现这个错误。顺便说一句,检索部分(get请求)正常工作。我对node和mongodb都很陌生,这是我的代码:\nnode应用程序\n
var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var Book = require('./Book.model'); var db = 'mongodb://localhost/Book'; mongoose.connect(db); var port = 3000; app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended:true })); app.get('/',function(req,res){ res.send('Hello :)'); }); app.get('/books',function (req,res) { Book.find({}).exec(function (err,books) { if(err){ res.send('错误 '+err); }else { res.json(books); } }); }); app.get('/books/:id',function (req,res) { Book.findOne({ _id:req.params.id }).exec(function (err,books) { if(err){ res.send('错误 '+err); }else { res.json(books); } }); }); app.post('/books',function (req,res) { var newBook = new Book(); newBook.title=req.body.title; newBook.author=req.body.author; newBook.catrgory=req.body.category; newBook.save(function (err,books) { if (err) { res.send('保存书籍时出错 '+err); }else { res.json(books); } }); }); app.listen(port,function () { console.log('应用程序正在监听端口 '+port); });
\n模型,模式\n
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var BookSchema = new Schema({ title:String, author:String, category:String }); module.exports = mongoose.model('Book',BookSchema);
文章标题:解决"Unexpected token d in JSON at position 6"错误
在开发过程中,我们可能会遇到一些错误,其中之一是"Unexpected token d in JSON at position 6"。本文将讨论此错误的原因以及解决方法。
首先,让我们看一下引发此错误的代码段:
app.post('/books', function (req, res) { Book.create(req.body) .then(function (createdBook) { // On success return a created object return res.json(createdBook); }) .catch(function (err) { // On error return error return res.json(err); }); });
此代码段是一个用于在数据库中保存书籍对象的POST请求处理程序。当请求成功时,将返回创建的书籍对象。但是,如果发生错误,将返回错误对象。
然而,在代码段的末尾存在一个多余的`});`,这可能是导致错误的原因之一。这个额外的括号会导致代码解析错误,并显示"Unexpected token d in JSON at position 6"错误。
要解决此错误,我们需要删除多余的`});`括号。修改后的代码如下所示:
app.post('/books', function (req, res) { Book.create(req.body) .then(function (createdBook) { // On success return a created object return res.json(createdBook); }) .catch(function (err) { // On error return error return res.json(err); }); });
现在,我们已经解决了多余括号导致的错误。如果你仍然遇到相同的错误,请确保检查其他可能导致此错误的原因。
希望本文能够帮助你解决"Unexpected token d in JSON at position 6"错误。如果你还有其他问题,请随时提问。