javascript - 如何在 SailsJS/Waterline 中使用 Model.query() 和 Promise?

标签 javascript node.js promise sails.js waterline

我遇到了 Sails.JS 0.9.8 的问题。 我想在 Model.query() 函数中使用 Promise(我使用sails-mysql 适配器)。

此代码将起作用:

User.findOne({ email: email })
.then(function(user) {
  console.log(user);
});

但这个不会

User.query("SELECT email FROM user WHERE email = ?", [ email ]))
.then(function(err, rows) {
  console.log(rows);
})

'err' 和 'rows' 都未定义。

只是没有实现还是我做错了什么? 如果没有实现,是否有任何替代方法可以将 Promise 与 .query() 一起使用?

提前谢谢你

最佳答案

您可以自己promisify(User.query),就像您对任何其他基于回调的 API 所做的那样,例如:

var Promise = require('bluebird');

....

var userQueryAsync = Promise.promisify(User.query);
userQueryAsync("SELECT email FROM user WHERE email = ?", [ email ])
.then(function(user) {
    console.log(user);
});

关于javascript - 如何在 SailsJS/Waterline 中使用 Model.query() 和 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886630/

相关文章:

javascript - Angularjs 在按钮单击时动态添加 li 元素

javascript - angular2中多步表单每一步的唯一url

javascript - AWS Lambda [Node.js 4.3] - 奇怪的堆栈跟踪

javascript - 在javascript中的一系列函数之后返回

javascript - Google Adwords 转化跟踪事件 - 单页

javascript - 如何创建整个 <li> 可点击,然后在鼠标悬停时在顶部显示框?

node.js - 如何在Chatbot中实现 "Back"对话

javascript - 避免在 Mocha 测试的 Elasticsearch 请求中使用 setTimeout()

javascript - Node.js、Promises 和递归——可能吗?

javascript - 在 JavaScript 中,如何在超时时包装 promise ?