如何在没有特定 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()
之前根据当前数据创建字段。
我发现我不需要这个:
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()
之前根据当前数据创建字段。