2017-02-19 4 views
-2

Funktion wird funktionieren, die Mungo AbfrageI am Knoten js neu bin, wenn ich Daten Rückruf es Rückruf zeigt mir nicht

module.exports.getSiteState = function(callback){ 
    var data; 
    Count.find(function(err,result){ 
     if (err) { 
      return callback(err); 
     }else{ 
      data = result[0].count; 
      callback(err,data); 
     } 
    }); 
} 

Funktion, Modell nennt hält, und wenn ich Rückkehr anstelle von Rückruf zurückgeben, bevor Abfrage .

var Data = require('../models/users'); 
router.get('/adminIndex', function(req,res){ 
    //console.log(User.getSiteState()); 
    var count = User.getSiteState(); 
    console.log("1 "+count); 
    res.render('admin/adminIndex',{layout: 'adminLayout'}); 
}) 
+0

events.js: 160 throw er; // Nicht behandelte ‚Fehler‘ Ereignis ^ Typeerror: Rückruf ist keine Funktion bei /Users/jay/Desktop/nodeProjects/SmartCity/models/users.js:88:4 bei Abfrage. (/Users/jay/Desktop/nodeProjects/SmartCity/node_modules/mongoose/lib/model.js:3419:16) unter /Users/jay/Desktop/nodeProjects/SmartCity/node_modules/kareem/index.js:264: 21 bei /Users/jay/Desktop/nodeProjects/SmartCity/node_modules/kareem/index.js:127:16 bei _combinedTickCallback (internal/process/next_tick.js: 67: 7) bei process._tickCallback (internal/Prozess /next_tick.js:98:9) –

+0

Das liegt daran, dass Sie beim Aufruf von getSiteState() 'keine Callback-Funktion übergeben. Bitte bearbeiten Sie Ihre Frage, um die Fehlerdetails dort direkt anzuzeigen, und löschen Sie dann Ihren Kommentar. – nnnnnn

+0

Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Frxstrem

Antwort

1

Die getSiteState-Funktion gibt keinen Wert zurück. Es ist asynchron und erwartet, dass Sie eine Callback-Funktion als Parameter übergeben. Dieser Rückruf kann dann verwendet werden, um die Ergebnisse zu erhalten:

var Data = require('../models/users'); 
router.get('/adminIndex', function(req,res) { 
    User.getSiteState(function(err, count) { 
     console.log("1 "+count); 
     res.render('admin/adminIndex',{layout: 'adminLayout'}); 
    }); 
});