You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+Mongoose异步模块导入后返回undefined问题求助

问题分析与解决方案

核心问题是导出的findUser函数没有返回值,导致外部调用时得到undefined,进而无法调用.then()方法。

问题根源

你定义的原findUser是async函数(本质返回Promise),但导出时的包装函数只调用了findUser(associatedUser),却没有返回这个调用的结果:

findUser: function (associatedUser) {
  findUser(associatedUser); // 这里没有return,函数默认返回undefined
},

修复步骤

1. 修正导出逻辑

直接导出原async函数即可,无需额外包装:

module.exports = {
  findUserAndUpdateValues: async function (associatedUser, givenObjectValue, newValue) {
    return findUserAndUpdateValues(associatedUser, givenObjectValue, newValue);
  },
  createUser: async function (associatedUser, currentContext, name, email, subject, budget, phone, message, mailinglist) {
    return createUser(associatedUser, currentContext, name, email, subject, budget, phone, message, mailinglist);
  },
  // 直接引用原async函数,自动继承Promise返回值
  findUser: findUser
};

如果需要保留包装函数,必须返回原函数的调用结果(因为原函数是async,返回的是Promise):

findUser: async function (associatedUser) {
  return findUser(associatedUser); // 关键:返回Promise
}

2. 优化原findUser函数(可选但推荐)

你当前用User.find()返回数组后再手动遍历查找,完全可以用User.findOne()直接获取单个文档,避免冗余操作:

async function findUser(associatedUser) {
  try {
    // findOne直接匹配单个文档,无需后续遍历
    const foundUserObject = await User.findOne({ associatedUser });
    return foundUserObject;
  } catch (err) {
    console.error(err);
    process.exit(1);
  }
}

3. 正确调用导出的函数

因为findUser返回Promise,外部调用有两种方式:

  • 在async函数内使用await:
    const MongoDBModule = require('./index');
    
    async function getTargetUser() {
      const user = await MongoDBModule.findUser(associatedUserPrompt);
      console.log(user); // 输出目标用户对象
    }
    
    getTargetUser();
    
  • 使用.then()链式调用:
    const MongoDBModule = require('./index');
    
    MongoDBModule.findUser(associatedUserPrompt)
      .then(user => console.log(user))
      .catch(err => console.error(err));
    

注意事项

其他导出的函数(findUserAndUpdateValues、createUser)也存在相同的无返回值问题,需要按照同样的方式修复——确保返回原函数的调用结果(如果原函数是异步的,返回Promise)。

内容的提问来源于stack exchange,提问作者Commoq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:48:24