如何在没有特定 req.bodys 的情况下将数据保存在 mongodb 中

How save data in mongodb without specific req.bodys

我发现我不需要这个:

var body = req.body;
var event = new EventModel({
        dateO: dateObject,
        date: body.date,
        name: body.name,
        type: body.type,
        meetingPoint: body.meetingPoint,
        info: body.info,
        men: body.men,
        women: body.women,
        description: body.description
    });

event.save.......

我只能使用:

var event = new EventModel(req.body);
event.save.......

如果所有输入 'name' 都与我数据库中的 attr 同名,mongoose 只需传递 req.body.

即可保存

我的问题是:

我在 HTML 表单中输入了以下名称:

date;
name;
type;
meetingPoint;
info;
men;
women;
description;

如果我只执行 var event = new EventModel(req.body),将保存此值,但有一个问题:

我有这个dateO,我需要在后台处理它。

我尝试执行以下操作:

req.body.dateO = what i want。但是我不能在控制器中使用req.body。

我怎样才能只使用:

var event = new EventModel(req.body); 并且仍然通过 dateO??

更新:

我有以下架构:

var EventSchema = new mongoose.Schema({
  dateO: {
    type: Date
  },
  date: String,
  name: String,
  meetingPoint: String,
  info: String,
  men: String,
  women: String,
  description: String,
});

我有这个 html 输入:

<input name="date"/>
<input name="name"/>
<input name="type"/>
<input name="meetingpoint"/>
<input name="info"/> 
<input name="men"/>
<input name="women"/>
<input name="description"/>

要不是一个问题就完美了:

我想使用 'DD/MM/YYYY' 格式的输入日期字段,但我不能,因为猫鼬 'MM/DD/YYYY' 除外,所以我正在处理这样的问题:

var body = req.body;
var dateObject = new Date(body['date'].replace( /(\d{2})\/(\d{2})\/(\d{4})/, "//"));

我可以按照我想要的方式将它们发送到我的数据库。我的问题是:

如何使用新的事件模型在一行中发送数据:

var event = new EventModel(req.body);

您应该在这里直接使用 Date 对象,而不是设置其他字段。对于您的客户端代码来说,只在表单中使用时间戳值会简单得多,它甚至可以从它自己的 Date 对象处理程序中获得。

这是一个非常好的建议,但您只需要在您的架构中使用一些额外的技巧即可从日期字段中的 "string" 获取日期对象:

var EventSchema = new mongoose.Schema({
  dateO: {
    type: Date
  },
  date: String,
  name: String,
  meetingPoint: String,
  info: String,
  men: String,
  women: String,
  description: String,
});

eventSchema.pre('save',function(next) {
  this.dateO = 
    new Date(this.date.replace( /(\d{2})\/(\d{2})\/(\d{4})/, "//"));
  next();
});

所以只需将您的逻辑移动到 "pre save" 挂钩中,然后将在处理 .save() 之前根据当前数据创建字段。