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的一些文档。