node.js - 如何使用类在 node.js 项目中正确使用 Promise?
问题描述
(底部的解决方案)
项目建设
我正在将一个“简单”的 node.js 项目转换为完整的对象项目 node.js。我找到了可以更好地组织我的文件的资源,但我仍然遇到类问题。我在object中做过php项目,但是nodejs结构似乎很特别。我咨询过:据我了解:
- app.js 是我的路由器,我将在其中定义响应客户端请求所需的控制器。
- /routes 是我拥有控制器的地方,我在其中实例化我的对象并使用它们的方法。 项目组织
我的课程位于根目录的文件夹中,但我可以将其移至 public/javascript 文件夹。我的问题是将应用层代码限制在应该访问数据库的类中。例如,只有 User 类有更新数据库中用户名的方法。所以在我的控制器(/路由)中,我不想要任何 sql 查询(顺便使用 sequelize)。
我不知道该怎么做
我试图在控制器中做一个承诺,在该控制器中我调用执行查询并返回结果的类的方法。
var user = new User();
var users = new Promise(function(resolve, reject) {
user.select();
});
Promise.all([users]).then(function(values){
console.log(values);
}
console.log(users);
)
在我的课上我做
models.user.findAll({
attributes: ['user_login','user_points','user_id']
}).then(
users => {
resolve(users);
}
)
正如预期的那样,resolve 没有定义。但是,如果我在像这样调用类方法之后立即解决:
var users = new Promise(function(resolve, reject) {
user.select();
resolve(result);
});
结果未定义,它将在不等待查询完成的情况下解决。
问题
由于我没有进行过实验,也没有找到关于这个主题的任何详细或最近的主题,所以我对如何进行没有任何线索。我的第一个问题是:问题是否可能来自文件组织(或者更一般地说是我的一种通常/良好的做法)。我的第二个问题是如何使用类和 node.js 处理这种类型的结构,所以我的示例应该可以工作。
谢谢您的帮助。我将补充一点,因为我没有找到关于这个主题的最新主题,我非常有兴趣制作一个分步指南,以在 node.js 中使用 app/routes/classes 和 ES6 js 构建一个完整的对象项目。目的是更好地理解它并将其提供给我的主管,以便他可以更正它并将其用于未来的新兵并发布。
解决方案
感谢@estus,我现在明白您可以将 Promise 存储在变量中。它允许我在这个变量上使用 .then。
var result = a.select();
result.then(function(result) {
console.log('my result : ', result);
});
在课堂上,您只返回结果,因为您不想解决 Sequelize 承诺:
users => {
return users;
}
解决方案
推荐阅读
- amazon-web-services - What is the difference between Amazon managed Blockchain and Amazon Blockchain Templates?
- android - 如何在网格回收器视图中创建加号图标以添加图像?
- php - PHP set_time_limit() 的作用域是什么?
- sql-server - 如何使用动态查询获取表中的列数
- java - 如何在Java中将@写成字符串
- python - 关于修改python列表的初学者问题
- angular - Angular 使用 bsdatepicker 发布日期 1 天回到 asp.net 核心应用程序
- c++ - 如何捕获无效的用户输入
- sql-server - 获取两天之间的天数总和,不包括星期日
- laravel - 在 Laravel 中注册时的 Paypal 重定向