簡體   English   中英

節點/貓鼬錯誤:ValidationError

[英]Node/Mongoose Error: ValidationError

這是我的server.js。 當我運行node server.js然后使用PostMan發布json時,它給了我以下錯誤。

var express = require('express')
var bodyParser = require('body-parser')
var app = express()

app.use(bodyParser.json())

app.get('/api/posts', function(req, res) {
  res.json([
    {
      username: '@rodandrew95',
      body: 'node rocks!'
    }
  ])
})

app.listen(3000, function() {
  console.log('Server listening on', 3000)
})


var Post = require('./models/post')
app.post('/api/posts', function(req, res, next) {
  // console.log('post received')
  // console.log(req.body.username)
  // console.log(req.body.body)
  // res.sendStatus(201)
  var post = new Post({
    username: req.body.username,
    body: req.body.body
  });
  post.save(function (err, post) {
    if (err) { return next(err) }
    res.sendStatus(201).json(post)
  })
})

錯誤:

(node:6863) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
ValidationError: Post validation failed
    at MongooseError.ValidationError (/Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/error/validation.js:23:11)
    at model.Document.invalidate (/Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/document.js:1486:32)
    at /Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/document.js:1362:17
    at validate (/Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/schematype.js:705:7)
    at /Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/schematype.js:742:9
    at Array.forEach (native)
    at SchemaString.SchemaType.doValidate (/Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/schematype.js:710:19)
    at /Users/andrewrodrigues/Desktop/write_modern/ch_1/node_modules/mongoose/lib/document.js:1360:9
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

我正在嘗試通過“用MEAN堆棧編寫現代Web應用程序”來學習MEAN堆棧,但是即使我嚴格按照代碼和說明進行操作,我始終都遇到問題。 任何人都可以幫助理解此錯誤,並可能推薦一些好的資源來學習均值堆棧嗎?

觸發此錯誤的原因是,您在架構中( /models/post )提供了貓鼬驗證 ,並且驗證失敗。

例如,如果您提供的模型是這樣的:

var postSchema = new Schema({

    "username": String,
    "body": String,
    "email": {
        type: String,
        required: true
    }

});
var Post = mongoose.model('Post', postSchema);

這將失敗,因為不遵守email required驗證程序。 在此處找到驗證器的完整列表。

旁注: res.sendStatus(201).json(post)將在發送狀態為201的響應后設置json正文和content-type標頭。 要同時發送,請使用:

res.status(201).json(post)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM