Je tente d'obtenir le résultat de MongoDB, puis de le transmettre à un const, mais de récupérer Vale de "non néglinée" où est-ce que je suis mal tourné?
Je me suis assuré que le code fonctionne sans retour et impression Pour consoler et assurez-vous que le jeu de données est présent dans mon MongoDB. p> lorsque ce qui précède est exécuté, je reçois les sorties suivantes sur la ligne de commande p> non définie p> connecté à dB p> puis il imprime les données suivantes qui sont les données de MongoDB P> { _id: 5ced1ce8aa89b60a7c2e34de,
name: 'Blight',
level: 4,
school: 'N',
time: [ { number: 1, unit: 'action' } ],
range: { type: 'point', distance: { type: 'feet', amount: 30 } },
components: { v: true, s: true },
duration: [ { type: 'instant' } ],
classes:
{ fromClassList: [ [Object], [Object], [Object], [Object] ],
fromSubclass:
[ [Object], [Object], [Object], [Object], [Object], [Object] ] },
source: 'PHB',
entries:
[ 'Necromantic energy washes over a creature of your choice that you can see within range, draining moisture and vitality from it. The target must make a Constitution saving throw. The target takes {@dice 8d8} necrotic damage on a failed save, or half as much damage on a succ
essful one. This spell has no effect on undead or constructs.',
'If you target a plant creature or a magical plant, it makes the saving throw with disadvantage, and the spell deals maximum damage to it.',
'If you target a nonmagical plant that isn\'t a creature, such as a tree or shrub, it doesn\'t make a saving throw, it simply withers and dies.' ],
entriesHigherLevel:
[ { type: 'entries', name: 'At Higher Levels', entries: [Array] } ],
page: 219,
damageInflict: [ 'necrotic' ],
savingThrow: [ 'constitution' ] }
3 Réponses :
const mongoose = require('mongoose'); function search(query) { return db.collection('spells').find({ "name": query }) } mongoose.connect('mongodb://localhost/dnd', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { console.log("Connected to DB" + "\n"); search("Blight").then(console.log); });
Vous retournez actuellement les données à la promesse, mais votre fonction ne renvoie rien, vous pouvez renvoyer l'objet Array et traiter ultérieurement les résultats
async function search(query) { try { const search = await db.collection('spells').find({ "name": query }).toArray(); return search; } catch(err) { throw new Error(err); } }
Après avoir reçu des conseils d'AVU à Freeenode / # Node.jode.js, j'ai examiné les promesses et j'ai proposé ce sloution.