求助多表查询提示TypeError: person.getDeperson is not a function错误?

sequelize+express多表查询
模型定义为

//Depart
'use strict';
module.exports = function (sequelize, DataTypes) {
    return sequelize.define('Depart', {
        id:{type:DataTypes.BIGINT(11), autoIncrement:true, primaryKey : true, unique : true},
        departname: { type: DataTypes.STRING,  allowNull: false, }
    },
    {
        freezeTableName: true,
        tableName: 'depart',
    });
}
//Person
'use strict';
module.exports = function (sequelize, DataTypes) {
    return sequelize.define('Person', {
        id:{type:DataTypes.BIGINT(11), autoIncrement:true, primaryKey : true, unique : true},
        name: { type: DataTypes.STRING,  allowNull: false },
        departId:{type: DataTypes.BIGINT(11), field: 'depart_id', allowNull: false }
    },
    {
        freezeTableName: true,
        tableName: 'person',  
        indexes: [{
            name: 'person_departId',
            method: 'BTREE',
            fields: ['depart_id']
        }]
    });
}

模型关系定义为

'use strict';
var sequelize = require('./db').sequelize();
var Depart = sequelize.import('./depart.js');
var Person = sequelize.import('./person.js');
Depart.hasMany(Person, { foreignKey: 'depart_id', targetKey: 'id', as: 'Deperson' });
Person.belongsTo(Depart, { foreignKey: 'depart_id', targetKey: 'id' });
sequelize.sync();
exports.Depart = Depart;
exports.Person = Person;

查询接口定义为

var express = require('express');
var router = express.Router();
var Person = require('../models').Person;
var Depart = require('../models').Depart;
router.get('/query', function (req, res, next) {
    Person.findOne().then(function (person) {
        person.getDeperson();
        res.set('Content-Type', 'text/html; charset=utf-8');
        res.end(JSON.stringify(person));
    }).catch(next);
});

访问/query接口报错

TypeError: person.getDeperson is not a function
at Model.<anonymous> (D:\VueProject\manage-system\service\controls\personApi.js:21:16)
    at Model.tryCatcher (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\promise.js:693:18)
    at Async._drainQueue (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\async.js:133:16)
    at Async._drainQueues (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\async.js:143:10)
    at Immediate.Async.drainQueues (D:\VueProject\manage-system\node_modules\_bluebird@3.5.0@bluebird\js\release\async.js:17:14)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)
    

person.getDeperson(); 这段去掉就正常了,但是去掉了就不能联查了,在另一个Demo里这么写就正常,请教各位大神这是哪里有问题呢

阅读 1.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题