7

当将senda 保存document到我的MongoDB database. 我Mongoose用作它的包装器。

这是我的 signup.js

var mongoose = require('mongoose');
var models = mongoose.models;

exports.user = function(req, res){
    var u = new models.Users(req.body);

    u.save(function(err, user) {
        if (err) {
            console.log(err);
            res.send(400, 'Bad Request');
        }

        res.redirect('/');
    });
};

如果err检测到一个,它会将err消息显示到日志中,但不会显示send Bad Request到浏览器。

我做错了吗?

4

3 回答 3

7

else前加一个res.redirect('/');。它可能发送 400 然后重定向到 /

于 2013-08-31T18:39:56.030 回答
3

或者,您可以return res.redirect('/');停止代码执行。

于 2019-03-20T02:57:52.233 回答
2

使用 Promises 更好,它为我解决了我的问题

我有一个类似的问题,并在您的示例中使用 u.save() 返回的 Promise 修复它。

var mongoose = require("mongoose");
var models = mongoose.models;

exports.user = function (req, res) {
var u = new models.Users(req.body);

u.save()
    .then((user) => {
        // If everything goes as planed
        //use the retured user document for something
         res.redirect("/");
    })
    .catch((error) => {
        //When there are errors We handle them here
        console.log(err);
        res.send(400, "Bad Request");

    });

};

于 2020-06-20T17:20:14.793 回答