繁体   English   中英

使用Node.js将数组插入MongoDB子文档

[英]Insert array into MongoDB subdocument with Node.js

我目前有一个架构,如下所示:

positionsApplied:[{
        position_id:String,
        index_position: Number
}],

我还需要将3个对象插入数据库:

在此处输入图片说明

如何通过Ajax调用将它们插入数据库? 到目前为止,我尝试过:

将数据添加到这样的数组中:

["58d6b7e11e793c9a506ffe8f", 0, "58c2871414cd3d209abf4fc1", 1, "58d6b7e11e793c9a506ffe7f", 1]

哪一个会这样通过我的ajax调用传递?(不确定)

$.ajax({
             url: "/insertPositionIndex",
             type: "POST",
             dataType: "json",
             data: {
                 newarray
             },
             success: function (data) {
            console.log(data);
          }
        })

插入数据库是我遇到的困难,如何分解数组以进行插入?

app.post('/insertPositionIndex', function(req, res){
var object = req.body.ordered_divs;
console.log(req.body);

      User.update(
        { "_id": req.user._id},
        { "$push":
            {"positionsApplied":
                {
                // unsure what to do here?

                }
            }
        }
    ).exec(function (err, result) {
           console.log(result);
           res.send({ results: result });
      });
      });

任何帮助是极大的赞赏! *请注意,模式中的position_id字段是数组中的div_id,索引位置字段也是数组中的index_pos。

用户架构:

    var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var User = new Schema({
    id: String,
    name: String,
    companyname: String,
    password: String,
    email: String,
    username: String,
    location: String,
    role:String,
    teamwork:Number,
    initiative:Number,
    technical_skills: Number,
    communication:Number,
    employees: String,
    profile_image: String,
    biodescription: String,
    twitter: String,
    facebook: String,
    instagram: String,
    linkedin: String,
    biodescription: String,
    positionsApplied:[{
                            position_id:String,
                            index_position: Number
    }],
    experience: [{
          title: String,
          location: String,
          company: String,
          start: String,
          end:String,
          description:String
  }],
    position: [{
                    _id:String,
          title: String,
          location: String,
          start: String,
          term:Number,
          description:String,
          date: {type: Date, default: Date.now},
          applied:[{
                candidate_id: String,
                profile_image: String,
                location: String,
                name: String,
                _id:String
                        }],
  }],
  education: [{
          school: String,
          location: String,
          degree: String,
          start: String,
          end:String,
          description:String,
                    _id:String
  }],

    images: [{
                    one: String,
                    two: String,
                    three: String,
                    four: String,
                    five:String,
                    six:String
    }],
});


module.exports = mongoose.model('User', User);

在此处输入图片说明

由于您的Schema是一个对象数组,并且所获取的数据(按照浏览器的控制台)也是一个对象的数组,为什么不将数组本身(浏览器的控制台中的那个)传递给ajax并使用mongodb $push$each $push其保存到数据库中。

$.ajax({
         url: "/insertPositionIndex",
         type: "POST",
         dataType: "json",
         data: {
             arrayOfObjects
         },
         success: function (data) {
        console.log(data);
      }
    })

app.post('/insertPositionIndex', function(req, res){
var object = req.body.ordered_divs;
console.log(req.body);

      User.update(
        { "_id": req.user._id},
        { 
        "$push":
            {
             "positionsApplied":{
                $each: req.body.arrayOfObjects
               }
            }
        }
    ).exec(function (err, result) {
           console.log(result);
           res.send({ results: result });
      });
});

您将必须更改arrayOfObjects键以匹配您的schema positionsApplied键的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM