Когда запрос выполняется, результаты передаются в качестве параметров в функцию обратного вызова. Если при выполнении запроса есть какая-либо ошибка, она передается в качестве первого аргумента, а результаты передаются в качестве второго параметра в функцию обратного вызова. И вот как это работает.
Итак, вы не можете использовать его взаимозаменяемо.
В вашем случае books.getBooks(function (books,err) {..
, если есть какая-либо ошибка, будет books
, содержащаяся в ней. И если нет, то будут результаты в err
параметрах.
И я предполагаю, что ваш запрос работает нормально, а вы запускаете проверку ошибок для значения err
, поэтому вы видите ошибку.
Может быть, вы путаетесь с названиями параметров. Помните, они просто имена переменных, результаты там в соответствии с положением переменных в обратном вызове.