mongoose保存失败,没有错误

 沈晓燕-东东 发布于 2023-02-13 17:03

正如标题所示,我遇到了mongoose save方法的问题,这种方法失败但不会产生错误.

我实际上知道它为什么失败,这是由于userId字段被标记为必需但没有提供...但我不知道它为什么不抛出错误.我已经筋疲力尽了谷歌和stackoverflow看着类似的建议没有运气,所以把它打开给任何可以帮助我的人!

这是代码......

Model.js

var mongoose = require('mongoose');

var TimeSchema = new mongoose.Schema({
    client: String,
    matter: String,
    activity: String,
    tags: String,
    description: String,
    comments: [String],
    startTime: Date,
    startTimeUTC: Number,
    endTime: Date,
    endTimeUTC: Number,
    duration: Number, 
    durationRnd: Number,    
    durationUnits: Number,  
    billable: Boolean,
    rate: Number,
    total: Number,
    user: String,
    userId: { type: mongoose.Schema.ObjectId, required: true }
}, {safe: true});

mongoose.model("Time", TimeSchema);


Controller.js

exports.addTime = function (req, res) {

    console.log('Adding time: ' + JSON.stringify(req.body));
    var time = new Time(req.body);
    time.save(function (err) {
        if (err) { res.send({'error' : err}); }
        res.send(time);
    });
}

编辑 - 为了澄清正在调用的回调,请以下面的代码为例.

exports.addTime = function (req, res) {

    console.log('Adding time: ' + JSON.stringify(req.body));
    var time = new Time(req.body);
    console.log("time = " + time);
    // TODO user
    time.save(function (err) {
        if (err) { handleError(res, err); }
        console.log("ok");
        Time.findById(time._id, function (err, found) {
            console.log("found = " + found);
        });
        res.send(time);

});

}

这是控制台输出

Adding time: {"description":"test","client":"","matter":"","activity":"","rate":
"","startTime":"2013-11-30T19:58:43.000Z","startTimeUTC":"1385841523000","endTim
e":"2013-11-30T19:58:45.000Z","endTimeUTC":"1385841525000","startLocale":"19:58"
,"startTimeLocale":"19:58:43","endLocale":"19:58","endTimeLocale":"19:58:45"}
time = { description: 'test',
  client: '',
  matter: '',
  activity: '',
  rate: null,
  startTime: Sat Nov 30 2013 19:58:43 GMT+0000 (GMT Standard Time),
  startTimeUTC: 1385841523000,
  endTime: Sat Nov 30 2013 19:58:45 GMT+0000 (GMT Standard Time),
  endTimeUTC: 1385841525000,
  startTimeLocale: '19:58:43',
  endTimeLocale: '19:58:45',
  _id: 529a43750a366b6419000001,
  comments: [] }
ok
POST /api/times 200 14ms - 313b
found = null

Ali.. 6

通过天真​​地不连接到数据库很可能遇到此错误.已经好几次发生在我身上.确保你mongoose.connect()的到位.

2 个回答
  • 问题解决了,感谢robertkelp.

    这是我的修改后的代码,如果有任何帮助,但似乎错误被抛出我只是没有正确处理它.

    exports.addTime = function (req, res) {
    
        console.log('Adding time: ' + JSON.stringify(req.body));
        var time = new Time(req.body);
        time.save(function (err) {
            if (err) { 
                handleError(res, err);
            }
            else {
                res.send(time);
            }
        });
    }
    

    2023-02-13 17:06 回答
  • 通过天真​​地不连接到数据库很可能遇到此错误.已经好几次发生在我身上.确保你mongoose.connect()的到位.

    2023-02-13 17:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有