Sequelize身份validation无法完成

我开始与node.js和sequelize,我得到以下错误:

/home/cbaket/test/test.js:9 .complete(function(err) { ^ TypeError: undefined is not a function at Object.<anonymous> (/home/cbaket/test/test.js:9:6) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3 

我的文件:test.js是:

 var Sequelize = require('sequelize'); var sequelize = new Sequelize('apidb', 'apidb', 'apidb', { dialect: "mysql", // or 'sqlite', mysql', 'mariadb' port: 3306 // or 5432 (for postgres) }); sequelize .authenticate() .complete(function(err) { if (!!err) { console.log('Unable to connect to the database:', err) } else { console.log('Connection has been established successfully.') } }); 

我正在关注Sequelieze网站上的早期教程之一。

我用下面的命令安装了最新的sequelize和mysql。

 $ npm install mysql $ npm install sequelize 

我已经尝试了很多类似的例子,总是得到相同的错误。 这些库正在工作,因为其他的例子工作正常,我可以在数据库中创build表,并从中获取数据,但validationfunction总是失败。

谢谢! ;)

Authenticate在后续版本的sequelize中返回Promise: https : //github.com/sequelize/sequelize/blob/2.0/lib/sequelize.js#L939

阅读bluebird文档,因为它非常有用: https : //github.com/petkaantonov/bluebird/blob/master/API.md

这样的事情应该工作(确保你检查连接错误…这只是一个简单的例子):

 var Sequelize = require('sequelize'); var sql = new Sequelize('DB', 'UNAME', 'PASS', { host: 'localhost', port: 3306, dialect: 'mysql' }); var test = sql.authenticate() .then(function () { console.log("CONNECTED! "); }) .catch(function (err) { console.log("SOMETHING DONE GOOFED"); }) .done(); 

您好sequelize改变了他们的authentication计划在最新的版本..请回到旧版本,并尝试它

你是对的!! ;)我只是删除续集,然后重新安装一个旧veriosn:

npm install sequelize@1.7.0

它的工作原理!

我没有find任何有关这方面的信息…他们不应该警告用户不推荐使用或修改function吗?

谢谢!! ;)

我怀疑你在找

 Sequelize.authenticate().complete(...) 

代替

 Sequelize.authenticate.complete(...) 

Sequelize.authenticate是一个返回promise的函数。 这不是一个.complete()方法的对象。 如果不执行,则不会返回任何承诺。 如果没有返回任何承诺,则不能在承诺上运行.complete()。

希望这可以帮助你。

以下是Mozilla开发networking中有关Promise的一些文档。