Можем ли мы обновить несколько записей одним запросом PUT в Node JS? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь обновить несколько записей с помощью одного запроса пут, используя службу Angular HTTP, которая, в свою очередь, использует API-интерфейс Node JS Express, который обрабатывает запрос PUT.Но до сих пор примеры, которые я видел в Интернете, ссылаются на обновление одной записи посредством запроса пут.Но вместо этого я хочу передать массив объектов в запрос Put из службы Angular Http, и он должен иметь возможность читать эту коллекцию в Node JS API.До сих пор я передавал один единственный объект как часть запроса, и я мог прочитать его свойства через "req.body.propertyname".Может ли он прочитать весь массив, который я хочу передать?

Допустим, это мой код на Angular для обновления одной книги с помощью запроса пут, как показано ниже:

updateBook (updatedBook: Book): Observable {return this.http.put (/api/books/${updatedBook.bookID}, updatedBook, {headers: new HttpHeaders ({'Content-Type': 'application / json'})});}

На Node js front он может читать переданный объект книги со стороны клиента (Angular), как показано ниже:

.put (function (req, res) {

    var data = getBookData();

    var matchingBooks = data.filter(function(item) {
        return item.bookID == req.params.id;
    });

    if(matchingBooks.length === 0) {
        res.sendStatus(404);
    } else {

        var bookToUpdate = matchingBooks[0];
        bookToUpdate.title = req.body.title;
        bookToUpdate.author = req.body.author;
        bookToUpdate.publicationYear = req.body.publicationYear;

        saveBookData(data);
        res.sendStatus(204);

    }
});

У меня вопрос, могу ли я передать коллекцию книг сразу, чтобы все они обновлялись одним запросом?

updateBook (updatedBooks: Book []): Observable {return this.http.put (/api/books, updatedBooks, {headers: new HttpHeaders ({'Content-Type': 'application / json'})});}

Если да, то как Node JS мог бы даже прочитать этот массивпередано от клиента. Будет ли req.body содержать этот переданный массив?

1 Ответ

0 голосов
/ 19 декабря 2018

Да, поскольку мы передаем данные с использованием метода PUT.В вашем случае вы можете отправить данные для обновления в виде массива объектов.Если вы используете MongoDB в качестве базы данных, вы можете обновить данные, используя Update Array Operator .

Мое предложение: Дело в том, что ничего не поделаешьв передней части.Если вам нужно обновить только одну запись, то передайте отдельные данные как объект внутри массива.Если вы хотите обновить несколько записей, передайте каждую запись как объект внутри массива бэкэнду.

Со стороны сервера мы можем получать данные с помощью req.body.books (имя объекта, который вы передаете из внешнего интерфейса).Если вы используете mongoDB, вы можете обратиться к ссылке о том, как хранить данные в массиве.

...