Node.js 导出一个返回对象的函数

标签 node.js sequelize.js

我正在尝试导出我在文件 ( chat.js ) 中定义的函数并在另一个文件 ( main.js ) 中使用它。

这是 chat.js 的代码

module.exports.list = function() {
    var chats;

    sequelize.query('SELECT * FROM Chats', {model: Chats}).then((chat) =>{
    console.log(chat);   
   chats = chat
})
return chat;

};

当我在 main.js 中使用它时
chat.list();

它按预期工作。

但是,当我将返回对象存储到变量并对其进行 console.log 时,我得到了未定义

最佳答案

您以 chat 方式返回 synchronous 对象,但其 asynchronous 查询处理。

使用 promise 链接或 async/await

module.exports.list = function () {
  var chats;

  return new Promise((resolve, reject) => {
    sequelize
      .query('SELECT * FROM Chats', {model: Chats})
      .then((chat) => {
        console.log(chat);
        resolve(chat);
      })
  })
};

某处:
function async test(){

  let result = await chat.list();

  console.log(result);
}

关于Node.js 导出一个返回对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50792341/

相关文章:

javascript - 如何在typeORM中的@ManyToMany中保存关系

node.js - Mongodb更新数组中现有项目的新位置,如果不存在则添加新位置

node.js - Sequelize ,将对象与子(关联)对象一起存储

javascript - 生成的解析器在 Node.js 上为转义引号抛出错误

javascript - React 和 JSX 与 ES5 的简单开发堆栈

associations - sequelize中,如何查询与 'through'关联的模型

javascript - 查询记录及其与 sequelize 的关联

orm - sequelize中allowNull和require的区别

node.js - 无法在 "modelRepository"构造函数的位置 #0 注入(inject)依赖项 "GetModelService"。原因 : Cannot read property 'name' of undefined

javascript - 机器人命令未按预期工作