如何使用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 中的表中

使用websocket节点js和php中的输入表单保存消息

如何从express node.js中的对象req数据转换为字符串

如何使用 Node.js 从 Supabase Storage 保存文件(将 blob 转换为文件)

如何使用 node.js&Mysql 从在线表单向数据库添加数据?

如何通过 ajax 调用将 html 表单数据发送到 node.js 服务器?