Wednesday, June 5, 2024
 Popular · Latest · Hot · Upcoming
39
rated 0 times [  46] [ 7]  / answers: 1 / hits: 21508  / 7 Years ago, sun, march 12, 2017, 12:00:00

I'm trying to run 2 promises in paralel with sequelize, and then render the results in a .ejs template, but I'm receiving this error:



 Promise.all(...).spread is not a function


This is my code:



var environment_hash = req.session.passport.user.environment_hash;
var Template = require('../models/index').Template;
var List = require('../models/index').List;

var values = {
where: { environment_hash: environment_hash,
is_deleted: 0
}
};

template = Template.findAll(values);
list = List.findAll(values);


Promise.all([template,list]).spread(function(templates,lists) {

res.render('campaign/create.ejs', {
templates: templates,
lists: lists
});

});


How can I solve thhis?


More From » node.js

 Answers
4

I'll make my comment into an answer since it solved your issue.



.spread() is not a standard promise method. It is available in the Bluebird promise library. Your code you included does not show that. Three possible solutions:



Access array values directly



You can just use .then(results => {...}) and access the results as results[0] and results[1].



Include the Bluebird Promise library



You can include the Bluebird promise library so you have access to .spread().



var Promise = require('bluebird');


Use destructuring in the callback arguments



In the latest versions of nodejs, you could also use destructuring assignment which kind of removes the need for .spread() like this:



Promise.all([template,list]).then(function([templates,lists]) {
res.render('campaign/create.ejs', {templates, lists});
});

[#58581] Thursday, March 9, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jacklynr

Total Points: 542
Total Questions: 120
Total Answers: 95

Location: Cape Verde
Member since Fri, Nov 27, 2020
4 Years ago
jacklynr questions
Fri, Jan 15, 21, 00:00, 3 Years ago
Thu, Jun 11, 20, 00:00, 4 Years ago
Thu, Jun 4, 20, 00:00, 4 Years ago
;