背景
我正在编写我的第一个MEAN应用程序。我试图创建一个API,允许在名为" chassis"的集合上使用基本的CRUD操作。
问题
到目前为止,我可以使用find()获取所有记录。我也可以找到BYId,并更新现有记录,没问题。 但是,当我尝试POST时,我收到以下错误:
dev@devbox:~/nimble_express/nimbleApp$ curl -X POST localhost:3000/chassis/ -d name=widget123 -d location=Canada -d ffd=test123 -d hw_model=hp -d asset_tag=12344
<h1>document must have an _id before saving</h1>
<h2></h2>
<pre>Error: document must have an _id before saving
at null._onTimeout (/home/dev/nimble_express/node_modules/mongoose/lib/model.js:112:18)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)</pre>
dev@devbox:~/nimble_express/nimbleApp$
代码
我在routes / chassis.js文件中有以下逻辑:
var express = require('express');
var router = express.Router();
//var mongoose = require('mongoose');
var Chassis = require('../models/Chassis.js');
/* GET chassis listing. */
router.get('/', function(req, res, next) {
Chassis.find( function(err, documents) {
if (err) return next(err);
res.json(documents);
});
});
/* GET /chassis/id */
router.get('/:id', function(req, res, next) {
Chassis.findById(req.params.id, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
/* POST /chassis */
router.post('/',function(req, res, next) {
console.log(req);
Chassis.create(req.body, function(err, post) {
if (err) return next(err);
res.json(post);
});
});
/* UPDATE /chassis/id */
router.put('/:id', function(req, res, next) {
Chassis.findByIdAndUpdate(req.params.id, req.body, function(err, post) {
if (err) return next(err);
res.json(post);
});
});
module.exports = router;
~
我已经尝试使用谷歌搜索此错误,但还没有发现任何有用的东西。 任何指针都会有所帮助和赞赏!