rawquery 没扎到返回什么_Sequelize不返回模型的实例

如果传递模型,则返回的数据将是该模型的实例 .

// Callee is the model definition. This allows you to easily map a query to a predefined model

sequelize.query('SELECT * FROM projects', { model: Projects }).then(function(projects){

// Each record will now be a instance of Project

})

我已经为名为 agent 的资源定义了一个模型 .

module.exports = function(sequelize, DataTypes) {

let Agent = sequelize.define('Agent', {

responseStatus: DataTypes.STRING,

agentnum: {

type: DataTypes.STRING,

primaryKey: true,

allowNull: false,

field : 'agentno'

},

fname : {

type: DataTypes.STRING,

allowNull : false,

field: 'fname'

},

lname : {

type: DataTypes.STRING,

allowNull: false,

field : 'lname'

},

fullname : {

type: DataTypes.STRING,

allowNull : false,

field: 'full_name'

},

status : {

type: DataTypes.STRING,

allowNull: false,

field: 'business_status'

},

loginDate: DataTypes.DATE

}, {

freezeTableName: false,

timestamps: false

});

return Agent;

};

当用我的查询调用 sequelize.query 并指定model:Agent时,我从sequelize中抛出一个错误:

TypeError: this.model.bulkBuild is not a function

堆栈指向 sequelize\lib\dialects\abstract\query.js:675 .

此错误仍然存在 until 我应用 sequelize.QueryTypes.RAW 的QueryType . 此时查询完成,我得到一个JSON响应,但它不是我的Agent模型的实例 . 来自sequelize查询的JSON响应包含应映射到的字段名称 .

import Sequelize from 'sequelize';

import config from './config';

export default callback => {

const sequelize = new Sequelize(config.database, config.username, config.password, config.params);

sequelize.sync().then(function() {

let db = { }

let agentModel = sequelize.import('model/agent.js');

db[agentModel.name] = agentModel;

db.sequelize = sequelize;

db.Sequelize = Sequelize;

db.sequelize.authenticate().then(function() {

console.log('CONNECTION OK');

});

callback(db);

}).catch(function(err) {

console.log('FAILED TO CONNECT: ', err.message);

});

}

我希望查询在运行该查询时返回Agent的实例(从POST调用到我的api) . 我正在使用MS SQL Server 2008 R2 .

任何输入都表示赞赏 . 谢谢 .

EDIT 1/30 这是生成sequelize对象并传入模型的代码 . 模型集合显示我的项目已添加,但它没有属性 .

connectDb: (function () {

var sequelize;

function createInstance() {

var sequelizeInstance, connectedAndAuthenticated;

sequelizeInstance = new Sequelize(config.database, config.username, config.password, config.params);

connectedAndAuthenticated = sequelizeInstance.authenticate();

connectedAndAuthenticated.sequelize = sequelizeInstance;

connectedAndAuthenticated.Sequelize = Sequelize;

var model = sequelizeInstance.import('../src/model/agent.js');

return connectedAndAuthenticated;

}

return {

getInstance : function () {

if (!sequelize) {

sequelize = createInstance();

}

return sequelize;

}

};

}())

EDIT 1/26 在操作 QueryTypes 之后,我发现了两件事 - 我无意中在数据库中使用模型名称(代理)创建了一个表,并且返回的对象的 tablename 属性值为空 . schema 和 tablename 由我指定,但查询是一个连接多个查询和表的存储过程,它不直接映射到名为 Agent 的数据库中的对象 . 话虽这么说,我的文档似乎建议 this does not and should not matter ,因为我正在创建自己的模型绑定到查询结果 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值