J'apprends à intégrer Quelqu'un peut-il expliquer ce que je fais mal et comment l'empêcher? J'ai collé le code et le résultat ci-dessous. P> Voici les scripts: p> Il s'agit de la sortie de l'exécution: p> [nodemon] starting `node app.js`
body-parser deprecated undefined extended: provide extended option app.js:10:20
Executing (default): SELECT `id`, `title`, `imageUrl`, `description`, `createdAt`, `updatedAt` FROM `products`
AS `product`;
Executing (default): CREATE TABLE IF NOT EXISTS `products` (`id` INTEGER NOT NULL auto_increment , `title` VARCHAR(255), `imageUrl` VARCHAR(255) NOT NULL, `description` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): INSERT INTO `products` (`id`,`title`,`imageUrl`,`description`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?);
Reached find all
All users: [
{
"id": 1,
"title": "Dhruv",
"imageUrl": "asdasdwadasd",
"description": "How u doin",
"createdAt": "2019-06-05T17:39:43.000Z",
"updatedAt": "2019-06-05T17:39:43.000Z"
},
{
"id": 2,
"title": "Dhruv",
"imageUrl": "asdasdwadasd",
"description": "How u doin",
"createdAt": "2019-06-05T17:44:24.000Z",
"updatedAt": "2019-06-05T17:44:24.000Z"
},
{
"id": 3,
"title": "Dhruv",
"imageUrl": "asdasdwadasd",
"description": "How u doin",
"createdAt": "2019-06-05T17:44:34.000Z",
"updatedAt": "2019-06-05T17:44:34.000Z"
}
]
Executing (default): SHOW INDEX FROM `products`
Success
Product Created
4 Réponses :
Comme nœud.js est de nature asynchrone, Vous pouvez atteindre l'usecase ci-dessus, en utilisant Celles-ci vous aideront à contrôler le flux, c'est-à-dire exécuter la deuxième fonction, uniquement après la première exécution complète. P>
Gardez simplement la
Les autres voies sont également d'abord essayer cela et répondez. const addProduct = (req,res,next)=>{
product.create({
title:"Dhruv",
imageUrl: "asdasdwadasd",
description : 'How u doin'
}).then(function(user){
console.log("Product Created");
findProduct();
}).catch(function(err){
console.log("cant create");
});
}
addProduct();
const findProduct = (req,res,next)=>{
product.findAll().then(users => {
console.log("Reached find all");
console.log("All users:", JSON.stringify(users, null, 4));
});
}
Je sais que cela fonctionnera, mais c'est une solution temporaire. Je veux connaître la bonne façon de faire ça. Je fais un site Web, il y aura beaucoup d'appels de fonction, je ne peux pas continuer à ajouter des appels de fonction à l'intérieur des fonctions.
Vos requêtes sont des fonctions asynchrones. Si la requête de recherche retourne avant que la création ne soit simplement parce que sa traitée rapidement. Si vous voulez être sûr que le second est exécuté après la fin du premier, vous devez l'appeler à l'intérieur de l'ajout de rappel. Par exemple:
C'est une autre façon de faire.
Ceci est promess code> basé. N'utilisez pas promess code> mot-clé BecoZ Sequelize est basé sur la promesse interne
Vous écrivez une fonction dans une fonction. Ce n'est pas un moyen efficace de le faire.
Je fais selon votre architecture du code et c'est efficace. Il est promesse code> pas seulement une fonction, homme
J'ai étudié un peu plus. Votre solution fonctionne. De plus, nous pouvons utiliser un délai d'attente, mais sa même chose. Une autre méthode que j'ai aimé est asynchraement et attend. Quoi qu'il en soit, merci beaucoup.
ASYNC Await CODE> est une autre manière de faire la promesse.