2016-05-25 7 views
0

im Postman zu exportieren, bekomme ich einen Fehler: TypeError: ClientPromise.then ist keine Funktion.wie ein Versprechen zu einer anderen Stelle in Knoten

*auth.js* 

const Client = require("@x/nr"); 

module.exports = { 
    ClientPromise: function(options) { 
    return Client.authenticate(options); <--- (this returns a promise) 
    } 
} 

Hier ist, wo ich das Versprechen von auth.js nennen möchte

*API.js* 
var ClientPromise = require('../config/auth').ClientPromise 

module.exports = { 
    findOneClientProblem: function(req, res) { 
    ClientPromise.then(function (client) { 
     const Problem = client.Problem; 
     return Problem.findOne(req.params.radarProblemID) 
    }).then(function (result){ 
     return res.json(result) 
    }); 
    } 
} 

Es funktioniert, wenn ich das alles in einer Datei wie diese haben.

const Client = require("@x/nr"); 

const ClientPromise = Client.authenticate(options); <--- (this returns a promise) 

module.exports = { 
    findOneClientProblem: function(req, res) { 
    ClientPromise.then(function (client) { 
     const Problem = client.Problem; 
     return Problem.findOne(req.params.radarProblemID) 
    }).then(function (result){ 
     return res.json(result) 
    }); 
    } 
} 
+0

die Funktion aufrufen (im ersten Beispiel - do 'ClientPromise: function (Optionen) {. ...}() 'wenn Sie das Versprechen teilen möchten –

Antwort

2

In api.js, müssen Sie tatsächlich die ClientPromise() Funktion aufrufen. Sie erhalten nur einen Verweis auf die Funktion, rufen sie aber nicht wirklich an, Sie haben also kein Versprechen.

Ihre Variable ClientPromise enthält nur einen Verweis auf die Funktion selbst. Um diese Funktion auszuführen, müssen Sie es nennen:

ClientPromise(options).then(...) 

hier, dass Veränderungen in Zusammenhang:

// *API.js* 
var ClientPromise = require('../config/auth').ClientPromise 

module.exports = { 
    findOneClientProblem: function(req, res) { 
    ClientPromise(/* put options here */).then(function (client) { 
     const Problem = client.Problem; 
     return Problem.findOne(req.params.radarProblemID) 
    }).then(function (result){ 
     return res.json(result) 
    }); 
    } 
} 
+1

@DavidTrinh - Hat dies Ihre Frage beantwortet? – jfriend00