как понять требования к методу Api MongoDB?

#mongodb

#mongodb

Вопрос:

я следил за обучающим видео YouTube для MongoDB.

используемый метод удалял Many из класса collection

и код был:

 function deleteManyItems(MyMongoClient){

var mydb = MyMongoClient.db('school');
var myColl = mydb.collection('students');

myColl.deleteMany(function(error, result){
    if(error){
        console.log('Sorry unable to delete items');
    }else{
        console.log(result);

    }

})
  

Хотя приведенный выше код работал, я немного смущен, потому что в официальных документах для метода говорится, что должен быть «фильтр». И мой код работал без фильтра:

deleteMany (фильтр, параметры, обратный вызов) Удаляет несколько документов из коллекции lib/collection.js , строка 945

Мой вопрос в том, как вы узнаете, читая документацию API, что является обязательным, а что нет, поскольку в документации не указано. это то, что вы должны выяснить, экспериментируя?

Комментарии:

1. Документы MongoDB очень хороши. В какой среде вы находитесь, node js и какая библиотека?

2. я использую vs code, nodejs и MongoDB mongodb.github.io/node-mongodb-native/3.6/api /…

3. что происходит, когда вы запускаете его? Что-нибудь удаляет?

Ответ №1:

В документах должно быть указано, какие параметры требуются. Вам не нужно гадать.

Но, насколько я могу судить, они этого не делают.

Таким образом, вы должны определить правильное использование трудным путем (методом проб и ошибок или ссылкой на другие ресурсы).

Обратите внимание, что в JavaScript, в общем:

  • Синтаксис языка позволяет вызывать любую функцию с любым количеством параметров. Поэтому в приведенном вами примере следующие вызовы будут разрешены языком:
 deleteMany()
deleteMany(filter)
deleteMany(filter, options)
deleteMany(filter, options, callback)
deleteMany(filter, options, callback, ignoredParameter)
  
  • Несмотря на то, что язык допускает все эти вызовы, реализация конкретного метода может быть невозможной. Например, предоставление 4 параметров, подобных последнему примеру, может работать так же, как и предоставление 3 параметров, или может произойти сбой с различными ошибками.
  • Обратный вызов часто является последним параметром.
  • Часто именованные параметры options могут быть опущены.
  • Если метод принимает обратный вызов, обратному вызову часто разрешается быть последним параметром, даже если он технически нарушает документированный вызов, например:
 deleteMany(filter, callback)
  

Эти соглашения не обязательно должны выполняться какой-либо конкретной библиотекой, поэтому они должны быть задокументированы в документации, прилагаемой к библиотеке.

В документации для deleteMany указано, что options это необязательно, но не указано, что filter это необязательно. Таким образом, кажется, что неправильно утверждается, что filter требуется, тогда как на самом деле это не так.

Комментарии:

1. спасибо за совет. Трудно самостоятельно изучать и практиковать программирование, особенно с плохой документацией