Почему Collection.bulkwrite () записывает только один документ в базу данных mongodb - PullRequest
1 голос
/ 30 июня 2019

Я построил эту сетку, используя ag-grid, и я пытаюсь переписать ее данные в моей базе данных mongodb, нажав кнопку saveInformation. enter image description here

app.component.ts

saveInformation() {
    console.log('actionPlanPartiesrowData: ', this.actionPlanPartiesrowData);
    this.saveInformationService
    .saveActionPlanInformation(this.actionPlanPartiesrowData)
    .subscribe((response) => {
          console.log('INSIDE ACTION PLAN COMPONENT INSIDE SUBSCRIBE saveInformation');
          console.log('response: ', response);
    });
}

Спаси information.service.ts

  saveActionPlanInformation(actionPlanPartiesrowData
  ) {
    return this.http.post(`${this.uri}/fillActionPlan2`, actionPlanPartiesrowData, {
      responseType: "text"
    });
  }

В бэкэнде:

server.js

router.route('/fillActionPlan2').post((req, res) => {
    console.log('REQ.body of action plan is ', req.body);
    res.json('Action Plan data has been received on the server side')
    actionPlanRow.bulkWrite([{
        insertOne: {
            document: req.body[0]
        },
        insertOne: {
            document: req.body[1]
        },
        insertOne: {
            document: req.body[2]
        }
    }]).then(rest => {

        res.json(res.insertedCount, res.modifiedCount, res.deletedCount)
        console.log(rest.insertedCount, rest.modifiedCount, rest.deletedCount);
    });
})

Вот данные, полученные в бэкэнде: req.body:

Req.body:

REQ.body of action plan is  [ { project: 'row1 data',
    id: 'row1 data',
    riskId: 'row1 data',
    iso27001: 'row1 data',
    priority: 'row1 data',
    projectOwner: 'row1 data',
    estimatedCost: 'row1 data' },
  { project: 'row 2 data',
    id: 'row 2 data',
    riskId: 'row 2 data',
    iso27001: 'row 2 data',
    priority: 'row 2 data',
    projectOwner: 'row 2 data',
    estimatedCost: 'row 2 data' },
  { id: 'row 3 data',
    project: 'row 3 data',
    riskId: 'row 3 data',
    priority: 'row 3 data',
    iso27001: 'row 3 data',
    projectOwner: 'row 3 data',
    estimatedCost: 'row 3 data*' },
  {},
  {},
  {},
  {},
  {},
  {},
  {},
  {} ]

После запуска:

db.actionplanrows.find ()

Я всегда нахожу только последнюю вставленную строку:

{ "_id" : ObjectId("5d1899417fe11c05ecd9e7eb"), "id" : "row 3 data", "project" : "row 3 data", "riskId" : "row 3 data", "priority" : "row 3 data", "iso27001" : "row 3 data", "projectOwner" : "row 3 data", "estimatedCost" : "row 3 data*" }

Я не понимаю, почему не вставляется первый и второй ряд. Почему выполняется только последний insertOne ()?
Спасибо!

1 Ответ

0 голосов
/ 01 июля 2019

Понятия не имею, почему bulkwrite вставляет только последний документ.
Я решил проблему с помощью insertMany вместо bulkwrite следующим образом:

actionPlanRow.insertMany([req.body[0], req.body[1], req.body[2], req.body[3], req.body[4]], {
    multi: true
}

Надеюсь, это кому-нибудь поможет:))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...