javascript - 即使没有拒绝,也要使用“.catch()”来承诺?
问题描述
所以我才刚刚开始了解猫鼬。此代码运行成功,并在我第一次提交时将文档推送到 MongoDB。但是当我尝试创建另一个帖子时它失败了。
//Post.js file
const mongoose = require('mongoose')
let Post = function(data, user) {
this.data = data
this.username = user
this.errors = []
}
Post.prototype.validate = function() {
if (this.data.text == "") {this.errors.push("Cannot be left blank")}
}
Post.prototype.create = function() {
return new Promise((resolve, reject) => {
this.validate()
if (!this.errors.length) {
const postSchema = new mongoose.Schema({
body: String,
author: String,
})
const PostModel = mongoose.model('Post', postSchema)
const post = new PostModel({
body: this.data,
author: this.username
})
post.save(() => {
resolve()
})
} else {
console.log("Failed")
}
})
}
module.exports = Post
//postController.js file
const Post = require("../models/Post")
exports.create = function(req, res) {
let post = new Post(req.body.text, req.session.user.username)
post.create().then(() => {
res.send("Post created")
}).catch(() => {
res.send("Failed")
})
}
所以,是的,如前所述,第一次提交帖子时,一切都成功运行,但在第二个帖子之后,我猜测会发生某种形式的错误,并且“.catch()”在 postController 文件中被调用,即使承诺不包含“reject()”。