Sequelize:findAll不是函数

时间:2018-01-13 11:09:05

标签: node.js sqlite sequelize.js

我只是按书学习node.js。

我遵循书中的说明并收到错误。 我花了几个小时才找到问题,但没有成功。 希望得到您的帮助和理解。

exports.connectDB = function(){
var SQNote;
var sequlz;

if(SQNote) return SQNote.sync();

return new Promise((resolve, reject) => {
    fs.readFile(process.env.SEQUELIZE_CONNECT, 'utf-8', (err, data) => {
        if(err){
            reject(err);
        }
        else{
            resolve(data);
        }
    });
})
.then(yamltext => {
    return jsyaml.safeLoad(yamltext, 'utf-8');
})
.then(params => {
    sequlz = new Sequelize(params.dbname, 
        params.username, 
        params.password, 
        params.params);

    SQNote = sequlz.define('Note', {
                            notekey: {
                                    type: Sequelize.STRING,
                                    primaryKey: true,
                                    unique: true
                                },
                            title: Sequelize.STRING,
                            body: Sequelize.STRING
                        });
    return SQNote.sync;
});};

此处出现错误:

exports.keylist = function(){
return exports.connectDB()
.then(SQNote => {
    return SQNote.findAll({ attributes: [ 'notekey' ] })
    .then(notes => {
        return notes.map(note => notekey);
    });
});};

错误: error in browser picture

SQNote.findAll不是函数

TypeError:SQNote.findAll不是函数     at exports.connectDB.then.SQNote(/home/vegas/NodeJS_course/notes/models/notes-sequelize.js:119:23)     在匿名

1 个答案:

答案 0 :(得分:1)

再过几个小时后,我发现了自己的错误。 应该是:

return SQNote.sync();

相反:

return SQNote.sync;