簡體   English   中英

從Express應用程序插入嵌入式文檔Mongo DB

[英]Insert embedded documents Mongo DB from express app

我有一個像這樣的mongo db模式

users:
{username:"",
 age: "",
 data: [ 
      {field1:"", field2:""},
      {field1:"", field2:""}
]

}

我的問題是如何將用戶對象發送到我的快速路由以將數據發布到數據庫。

通常我會像這樣創建我的用戶對象:

var user= {username:"test" age: 20};

並通過我的ajax調用將此用戶對象發送到我的adduser路由。

我該如何組織以上工作以包括我的嵌入式文檔。

當我使用這種結構時:

 sign_in_data: [{date:"",time_in:"",time_out:""}]

我的數據庫如下所示:

sign_in_data[0][date]: "",
sign_in_data[0][time_in]: "",
sign_in_data[0][time_out]: ""

但它應該像這樣:

sign_in_data: [
{
   date: "2015-06-08",
   time_in: "17:35",
   time_out: "17:35"
},
]

在配置Express時,請檢查您是否正在使用以下代碼行:

如果您使用Express 4.x版本

注意 :您需要安裝主體解析器

app.use(bodyParser.urlencoded({ extended: true }));

如果您使用的是Express 3.x版本

app.use(express.urlencoded());

我做了一個測試示例,其中,屬性車是從html文件發送的對象的數組,並且將其保存在數據庫中。

這是我的快遞服務器文件:

// ..

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.post('/api/user', function (req, res) {
  var user = {
    username: req.body.username,
    age: req.body.age,
    cars: req.body.cars
  };

  db
    .collection('user')
    .insert(user, function (err, result) {
      if (err) return res.status(500).send(err);

      res.send(result);
    });
});

// ..

插入的數據庫數據:

{
    "_id" : ObjectId("5578b48f1e8cdf0520bdf76f"),
    "username" : "wilsonbalderrama",
    "age" : "29",
    "cars" : [
        {
            "name" : "Ferrari",
            "color" : "Red"
        },
        {
            "name" : "Mustang",
            "color" : "Gray"
        }
    ]
}

以及我發送數據的html文件,您可以在以下要點文件中進行查看: https : //gist.github.com/wilsonbalderrama/62f76a348c0aa217cdd9

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM