2014-09-06 1 views
1

J'utilise nock pour intercepter les appels vers mon hôte API et effectuer des recherches de db locales avant de renvoyer la réponse.Node.js - Nock et nedb - La réponse est exécutée avant la fin du rappel

Veuillez vous référer au code ci-dessous. J'intercepte les appels à 'entrypoint' et je voudrais répondre avec les données récupérées à partir du magasin de données local.

Je crois qu'il s'agit d'un problème avec le module Nock lui-même et j'ai entendu quelques suggestions pour utiliser les flux. Pouvez-vous s'il vous plaît aider à surmonter ce problème?

// ... Code Block 

var nock = require('nock'), 
    request = require('request'), 
    DataStore = require('nedb'), 
    db = new DataStore({filename: './nedb.data'}); 

db.loadDatabase(function(err) { 
    if (err) throw err; 
}); 

db.insert ({'record1': { "key1" : "value1"} }); 
db.insert ({'record2': { "key2" : "value2"} }); 
db.insert ({'record3': { "key3" : "value3"} }); 
db.insert ({'record4': { "key4" : "value4"} }); 
db.insert ({'record5': { "key5" : "value5"} }); 

var n = nock('http://localhost:8000') 
      .get ('/entrypoint') 
      .reply (200, function() { 
       db.find ({}, function(err, docs) { 
        if (err) throw err; 
        return docs; 
       }); 
      }); 

request('http://localhost:8000/entrypoint', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log ('\nBEGIN: Body: '); 
     console.log(body); 
     console.log ('\n\nEND: Body: \n\n'); 
    } 
}); 

Répondre

Questions connexes