sequelize的初始化如下定义如下:
var Sequelize = require('sequelize'); exports.schema = function () { return new Sequelize('Test1', 'admin', '123456', { host: '192.168.1.200', port: '3306', dialect: 'mysql' }); }
model定义如下:
var Sequelize = require('sequelize'); var schema=require('./schema').schema(); var Collect=schema.define('Collect',{ CollectID:{type:Sequelize.INTEGER}, CollectTime:{type:Sequelize.DATE}, CourseID:{type:Sequelize.INTEGER}, UserID:{type:Sequelize.INTEGER}, CourseClassroomID:{type:Sequelize.INTEGER} },{ freezeTableName: false , tableName: 'Collect', timestamps: false } ); module.exports =Collect;
封装的一个查询方法:
var CollectModel=require('../models/CollectModel.js'); exports.getCollectByCollectID=function(collectid,callback){ var cor={where:{CollectID:collectid}}; CollectModel.findOne(cor,function(data){ callback(data); }); }
然后从别的地方调用这个
getCollectByCollectID方法的时候,从命令行的调试信息中看到自动加了一列(id),但是实际的数据库中是不存在id这一列的。
我在sequelize官方文档上找了半天也没找到解决办法。有没有哪位大侠知道这是怎么回事,怎么让他查询的时候不会自己添加列。只查我自己定义的?
问题的解决方法见二楼我自己的回答。
呵呵,限制这么多的orm就别用了呗、
呵呵
刚刚又在官网上看了看,发现有一句
Sequelize will assume your table has a id
primary key property by default.
我定义的model中没有指定主键,所以orm查询的时候默认添加了一个id作为主键,把CollectID设置为主键问题就解决了。