Je suis plus gentil pour node js, j'essaie d'écrire ma première application web nodejs que je veux lire à partir de db et afficher les données dans la page html.
router.post("/filtra", function (req,res){
console.log("Hello I'm on the start page");
var criterioFiltro = {
nominativo : req.body.nominativo,
settore: req.body.settore
}
console.log(criterioFiltro);
sequelize.authenticate().then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
var filtrati;
Persona.findAll().then(persona => {
filtrati = JSON.stringify(persona, null, 4);
console.log("rubrica:", filtrati);
});
console.log("rubrica:", filtrati);
/*
if (criterioFiltro.nominativo!= "" && criterioFiltro.settore != "")
{
filtrati = where(where(rubrica.elencoTelefonico, {nominativo: criterioFiltro.nominativo}), {settore: criterioFiltro.settore}) ;
}
else if (criterioFiltro.nominativo!= "")
{
filtrati = where(rubrica.elencoTelefonico, {nominativo: criterioFiltro.nominativo});
}
else if (criterioFiltro.settore != "")
{
filtrati = where(rubrica.elencoTelefonico, {settore: criterioFiltro.settore});
}
else
{
filtrati = [];
}
*/
res.render("filtrati", {settori: settori, rubrica: filtrati});
});
pourquoi après le bloc
var filtrati;
Persona.findAll().then(persona => {
filtrati = JSON.stringify(persona, null, 4);
console.log("rubrica:", filtrati);
});
console.log("rubrica:", filtrati);
la variable "filtrati" hors du bloc
Persona.findAll().then(persona => {
filtrati = JSON.stringify(persona, null, 4);
console.log("rubrica:", filtrati);
});
est vide? le premier console.log ("rubrica:", filtrati); imprimer le fichier json, le second indisponible ce que je me trompe? que puis-je faire pour renvoyer le jeu de résultats de la requête?
Merci d'avance. Raffaele
1 réponse
Ceci est très courant en JavaScript. Vous devez appeler le rendu dans le rappel .findAll
.
Exemple:
Persona.findall().then(persona => {
// DO YOUR STUFF
res.render(....);
});
Ou, puisque c'est une promesse, vous pouvez l'attendre comme ceci:
const data = await Persona.findall();
console.log(data);
Questions connexes
De nouvelles questions
node.js
Node.js est un runtime d'E / S asynchrone basé sur des événements, non bloquant qui utilise le moteur JavaScript V8 de Google et la bibliothèque libuv. Il est utilisé pour développer des applications qui font un usage intensif de la possibilité d'exécuter JavaScript à la fois sur le client et sur le serveur et bénéficient donc de la réutilisation du code et de l'absence de changement de contexte.