所以,就我谷歌而言,我明白这个问题与异步/承诺编码有关。我浪费了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方法?