2017-06-30 8 views
-2

Wie kann ich Code schreiben, der das Gleiche tut, aber mit .then und .failMongoDB Knoten js .then .fail

Im folgenden Code db.get() in Zeile 1 kehrt die Verbindung als "db" in db.collection ('......) .find ({}). Mit anderen Worten ist db.get() dasselbe wie db; Ich habe die Verbindung zu mongodb in einem separaten Modul.

db.get().collection('type').findOne({"_id":objId}, function(err, typeInfoResult){ 
    try{ 
     if(err){ 
      res.send(errMsg); 
     } 
     else{ 
      var business_id = typeInfoResult.business_id; 
      db.get().collection('business_info').findOne({"_id":ObjectID(business_id)}, function(err, businessInfoQuery){ 
       if(err){ 
        res.send(errMsg); 
       } 
       else{ 
        var completetypeDetail = {typeDetails:typeInfoResult, BusinessDetails:businessInfoQuery}; 
        res.send(completetypeDetail); 
       } 
      }) 
     } 
    }catch(err){ 
     res.send(errMsg); 
     } 
    }); 
}); 

Antwort

0

dies unter Versuchen Schnipsel aus:

db.collection('type').find({"_id":objId}).toArray(function(err, typeInfoResult){ 
try{ 
    if(err){ 
     res.send(errMsg); 
    } 
    else{ 
     var business_id = typeInfoResult.business_id; 
     db.get().collection('business_info').findOne({"_id":ObjectID(business_id)}, function(err, businessInfoQuery){ 
      if(err){ 
       res.send(errMsg); 
      } 
      else{ 
       var completetypeDetail = {typeDetails:typeInfoResult, BusinessDetails:businessInfoQuery}; 
       res.send(completetypeDetail); 
      } 
     }) 
    } 
}catch(err){ 
    res.send(errMsg); 
    } 
}); 
+0

Es ist genau die gleiche Code, den ich –

0

Hier ein Beispiel ist, weil ich MongoDB gerade angeschlossen neulich:

./config/mongodb.js

// Load MongoDB Driver 
const MongoClient = require('mongodb').MongoClient; 

/** 
    * 
    * Instantiate MongoDB Connection 
    * 
    * Additional options: 
    * https://docs.mongodb.com/manual/reference/connection-string/#connection-string-options 
    */ 

// Connect database 
export const MongoDB = new Promise((resolve, reject) => { 
    // MongoDB Connection Info 
    let url = `mongodb://${Singleton.currentConfig.databases.mongodb.user}:`; 
    url += `${Singleton.currentConfig.databases.mongodb.password}@`; 
    url += `${Singleton.currentConfig.databases.mongodb.host}:`; 
    url += `${Singleton.currentConfig.databases.mongodb.port}/?authMechanism=DEFAULT&`; 
    url += `authSource=${Singleton.currentConfig.databases.mongodb.db}`; 

    // Use Connect Method to connect to the Server 
    MongoClient.connect(url) 

    .then((db) => { 
     console.log('Casually connected correctly to server.'); 
     resolve(db); 
    }) 

    .catch((error) => { 
     console.log(`MongoDB Connection Error: ${error}`); 
     reject(error); 
     process.exit(0); 
    }); 
}); 

./app.js

const MongoDB = require('./config/mongodb'); 
// or 
// import MongoDB from './config/mongodb'; 

// Acquire an object 
userDetails = { email: '[email protected]', firstName: 'Uwot', lastName: 'Mate' }; 

// Create a user 
MongoDB.collection('users').insertOne(userDetails) 

    .then((done) => { 
    console.log(`Added: ${done}`); 
    }) 

    .catch((error) => { 
    throw new Error(`Fecal's on fire, yo: ${error}`); 
    }); 
+0

Grundsätzlich haben, wo Sie '.findOne ({Sachen} function() {...})' haben, loswerden von allem nach dem ersten Komma und ersetzen Sie es durch ein ')', und starten Sie dann die Verkettung '.then (function() {...}) 'darauf. – agm1984

+0

Auch nur um zu klären, können Sie alle meine '(etwas) => {' mit 'Funktion (etwas) {' ersetzen. Prüfe Fettpfeilfunktionen. – agm1984

+0

Ich habe versucht, dies zu tun, aber ich bekomme Fehler mit db.get(). Sammlung ("Typ"). FindOne() ist keine Funktion. –

Verwandte Themen