如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?
Posted
技术标签:
【中文标题】如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?【英文标题】:How to save form data as an objects and array of objects to mongodb using loop in node.js? 【发布时间】:2014-12-04 10:37:40 【问题描述】:我是 MongoDB 新手,我在项目中使用 Node.js、Express 4 和 mongoose(mongoDB)。我坚持在循环中将表单数据保存到 mongoDB,并且我的模型也包含对象和对象数组。
型号:
var Subscriber = new Schema(
first_name: String,
emergency_contact_1:
name: String,
number: [
type: String
]
,
residential:
phone: String,
address: String,
...
,
medications: [
visit_id: type: Object ,
name: String,
....
],
food_allergies: [
type: String
],
....
);
控制器: 我想用这种方式保存数据:
var subscriber = new Subscriber();
//Here I am trying to save all form's fields to mongoBD fields.
for (var field in form_data)
subscriber[field] = form_data[field];
subscriber.save(function (err1, instance)
if (err)
console.log("error");
return res.send("...");
console.log("saved successfully");
使用上面的循环可以正确保存普通字段,但是当对象或数组出现时,它不会保存到 mongoDB。
有什么解决办法吗?或任何其他方式通过循环插入/保存数据到 mongoDB 模型? 任何帮助将不胜感激。谢谢..!!
【问题讨论】:
你试过使用Subscriber.create(form_data, callback)
吗?
@AndrewVolchenko 我已经尝试过了,它适用于像 first_name、Last_name 和 all 这样的单个字段。但是在 mongoDB 模型中我有对象和对象数组,所以当时它没有被保存,因为 form_data 会作为个人来。例如,如何使用循环将form_data(如first_name、resident_phone、residential_address)保存到mongoDB模型中,如first_name:''、resident:phone:''、address:''?谢谢你..!!
【参考方案1】:
节点
var PersonSchema = new Schema(
name:
given:
type: String,
required: true
,
family:
type: String,
required: true
,
children: [PersonSchema]
);
var Person = mongoose.model('Person', PersonSchema);
app.post('/person', function (req, res)
Person.create(req.body)
.then(function (created)
console.log(created);
res.json(created.id);
);
);
客户
$.ajax(
url: '/person',
type: 'POST',
data:
name:
family: 'Green'
,
children: [
name:
given: 'Matt',
family: 'Green'
,
name:
given: 'Dave',
family: 'Green'
]
)
如您所见,我有嵌套的对象和数组。这对我来说很好:)
【讨论】:
你能告诉我 req.body 包含什么吗?如果它包含来自客户端的数据,那么它对我不起作用。因为在我的代码中 form_data 包含单个字段值而不是对象。如果没有,则给出它的 sn-p。谢谢。 @Divyesh 您能否提供您的form_data
对象的示例?
我的 form_data 对象看起来像 first_name: 'divyesh', last_name: 'dhokiya', resi_phone: '8147181480', resi_address, ec1_name: 'abc', ec1_phone: '1234567890' 和 mongodb 模型就像上面我提到的问题。谢谢..!!以上是关于如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 node.js 将 sql 中的数据放入 html 中的表中
如何从express node.js中的对象req数据转换为字符串
如何使用 Node.js 从 Supabase Storage 保存文件(将 blob 转换为文件)