2016-02-23 4 views
1

Я пытаюсь выяснить, как использовать mysql-обещание. https://www.npmjs.com/package/mysql-promiseКакова цель функции распространения в этом коде?

Вот пример кода;

var db = require('mysql-promise')(); 

db.configure({ 
    "host": "localhost", 
    "user": "foo", 
    "password": "bar", 
    "database": "db" 
}); 

db.query('UPDATE foo SET key = ?', ['value']).then(function() { 
    return db.query('SELECT * FROM foo'); 
}).spread(function (rows) { //what's purpose of spread()? 
    console.log('Loook at all the foo', rows); 
}); 

Какова цель функции спреда? Что именно он делает?

+2

MySQL-обещание использует Bluebird ... документы для Bluebird [распространения] (http://bluebirdjs.com/docs/api/spread.html) –

+2

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

ответ

2

Jaromanda X является правильным, пример искажает spread.

Идеальный вариант использования для распространения, когда функция callback/chain имеет несколько параметров, но обещание возвращает одно значение (наше задание, чтобы убедиться, что это массив параметров в формате, используемом цепной функцией), поэтому:

Promise.resolve([1,2,3]).spread(function(a, b, c){ ... 

эквивалентно (в ES6):

Promise.resolve([1,2,3]).then(([a, b, c]) => { ... 
1

Функция распространения происходит из библиотеки обещаний Bluebird, которая поставляется с библиотекой mysql-prom. Он разворачивает обещание, которое должно возвращать массив и дает каждому элементу этого массива переданную ему функцию, в этом случае строки из базы данных mysql.

От package.json MySQL-Promise на GitHub:

"dependencies": { 
    "bluebird": "^2.10.2", 
    "mysql": "^2.10.2" 
    }, 

Вот больше информации от Bluebird проекта: http://bluebirdjs.com/docs/api/spread.html

1

.spread является Bluebird (обещание библиотека, `MySQL-обещание используя) функция.

В принципе, .spread позволяет обрабатывать возвращаемое значение из обещания, которое представляет собой массив вместо одного значения.

Для получения дополнительной информации см. http://bluebirdjs.com/docs/api/spread.html.

Смежные вопросы