【发布时间】:2016-07-04 12:20:42
【问题描述】:
我正在尝试使用 MEAN 堆栈创建应用程序。我正在使用 mongoose 作为我的 mongodb 数据库的架构。在一个包含字符串、数字和日期字段的集合上,我在尝试保存到数据库时遇到错误。用户输入的部分信息是数字和日期。这给了我一个错误,我注意到我从未保存它。问题:在我捕获表单中的信息后,我是否必须从 String 转换为 Number 并从 String 转换为 Date?如果是这样,我尝试将 Date.parse 转换为将 String 转换为 Date 和 parseInt 以覆盖从字符串到数字,如下所示:
app.post('/api/show/post', authCheck, function(req, res) {
console.log("Entrada a post");
console.log(req.body);
var ciaID = " ";
req.body.moveid = Date.parse(req.body.movein);
req.body.open = Date.parse(req.body.open);
req.body.close = Date.parse(req.body.close);
req.body.number = parseInt(req.body.number);
req.body.estimateamount = parseInt(req.body.estimateamount);
req.body.balancedue = parseInt(req.body.balancedue);
mongoose.model('company').findOne({name: "test company"}, function(err,doc){
var ObjectID = require('mongodb').ObjectID;
ciaID = new ObjectID(doc._id);
});
var show = new Show(req.body);
show.created_at = Date();
show.updated_at = Date();
show.created_by = "username";
show.updated_by = "username";
show.save(function(err, doc){
if (err) {
console.log(" the program all gets in here");
return err
}
else {
res.status(201).json(doc);
}
});
});
我也尝试过不转换任何这些值,但在这两种情况下都不起作用。我有其他的集合,它只包含字符串字段,我没有任何问题。
我将不胜感激任何建议,
提前谢谢你
【问题讨论】:
-
我认为,保存日期可能有问题,因为 mongodb 接受 ISO 日期格式,所以试试这个 var crtDate = new Date(); var dateToSave = crtDate.toISOString();
-
感谢您的帮助。所以,我在这里看到的是您建议将数据库中的字段从日期更改为字符串。我说的对吗?
-
如果您在保存数据时遇到问题,请发布您要保存的模型和最终展示对象。
-
感谢您的跟进。由于您的上一篇文章,我发现了问题。有一个字段在 mongodb 和 mongoose 上定义为 Date,并且在表单中使用错误。猫鼬不会让我保存它以保持完整性。愚蠢的错误,真的很抱歉。再次感谢您的宝贵时间。