首页新闻找找看学习计划

node.js sequelize查询问题

0
悬赏园豆:30 [已关闭问题] 关闭于 2015-06-25 16:57

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官方文档上找了半天也没找到解决办法。有没有哪位大侠知道这是怎么回事,怎么让他查询的时候不会自己添加列。只查我自己定义的?

问题的解决方法见二楼我自己的回答。

最长的路漫漫的主页 最长的路漫漫 | 菜鸟二级 | 园豆:252
提问于:2015-06-25 15:53
< >
分享
所有回答(2)
0

呵呵,限制这么多的orm就别用了呗、

傲慢与偏剑 | 园豆:381 (菜鸟二级) | 2015-06-25 16:24

呵呵

支持(0) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2015-06-25 16:55
0

刚刚又在官网上看了看,发现有一句

Sequelize will assume your table has a id primary key property by default.

我定义的model中没有指定主键,所以orm查询的时候默认添加了一个id作为主键,把CollectID设置为主键问题就解决了。

最长的路漫漫 | 园豆:252 (菜鸟二级) | 2015-06-25 16:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册