模块导出异步函数undefined无法等待

时间:2018-02-27 21:49:22

标签: javascript node.js asynchronous es6-promise

所以,就我谷歌而言,我明白这个问题与异步/承诺编码有关。我浪费了2Hr以上,但仍然没有收到任何结果。可能是因为我很糟糕。所以我的identifier.js代码是正确的,工作正常,它返回我想要的确切数据。 app.js仍然很好。那问题出在哪里?我无法从identifier.js导出结果值,因为如果我这样做,我会收到'undefined':

    const identifier = require("./db/ops/identifier");
    trade_log.create({
    Flag: req.body.Flag,
    Instrument: req.body.Instrument,
    Venue: req.body.Venue,
    Price: req.body.Price,
    Currency: req.body.Currency,
    Quantity: req.body.Quantity,
    Counterparty: req.body.Counterparty,
    Identifier: identifier(req.body.Counterparty),
    Commentary: req.body.Commentary,

但如果我将其正确导出(根据其他指南),就像

一样
let x = identifier(req.body.Counterparty).then(return value);

我在写trade_log.create阶段时收到错误。

什么是identifier.js?该模块是一个函数,它应该通过获取和接收响应,返回数据和输入来从输入形式(req.body)请求数据。然后在app.js中它应该写入MongoDB(写得很好,已经测试过了)

app.js

const trade_log = require("./db/models/trade_log");
const identifier = require("./db/ops/identifier");
app.all('/log', function (req, res, next) {
let x = identifier(req.body.Counterparty.then();
trade_log.create({
    Flag: req.body.Flag,
    Instrument: req.body.Instrument,
    Venue: req.body.Venue,
    Price: req.body.Price,
    Currency: req.body.Currency,
    Quantity: req.body.Quantity,
    Counterparty: req.body.Counterparty,
    Identifier: x,
    Commentary: req.body.Commentary,
},function (err, res) {
    if (err) return console.log (req.body) + handleError(err);
    console.log(res);
});
next();
});

identifier.js:

const identifier = (name) => {
request(['options, name'], { 'whatever' })
.then(response => {
    /code that works fine
    let charset = result;
    return (charset);

module.exports = identifier;

我已经在Identifier.js中试过这种导出方法:

 function name(param) {
 //code here
 }
 module.exports = name();

和此:

 module.exports = {
    function: (name) => {
    //code here
 }

我也找到了相关的SW答案:Asynchronous nodejs module exports但我仍然无法理解我做错了什么。

我应该如何更正符合新ES6标准的代码,还是应该使用其他module.exports方法?

0 个答案:

没有答案