2013-02-24 2 views
0

я хочу "код-первый", который генерирует таблицу с помощью "Sequelize", вот мой кодSequelize ассоциации получают ошибки

var Sequelize = require('sequelize'); 

exports.createTable = функция (Req, Рез) { вар sequelize = new Sequelize ('myblog', 'root', '');

var Blog = sequelize.define('Blog',{ 
    // the blog id 
    bid: { type: Sequelize.INTEGER, allowNull: false, autoIncrement: true ,primaryKey: true }, 
    // bname 
    btitle: { type: Sequelize.STRING, allowNull: false }, 
    // blog Content 
    bcontent: { type: Sequelize.TEXT, allowNull: false }, 
    // blog date 
    bdate: { type: Sequelize.DATE, defaultValue: Sequelize.NOW } 
}); 

var User = sequelize.define('User',{ 
    // uid 
    uid: { type: Sequelize.INTEGER, allowNull: false ,autoIncrement: true, primaryKey: true }, 
    // uname 
    uname: { type: Sequelize.TEXT, allowNull: false, }, 
    // register date 
    regDate: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW }, 

}); 

Blog.hasMany(User); 
User.hasMany(Blog); 

Blog.sync(); 
User.sync(); 

var blog = Blog.build({ 
    btitle: 'this is a title', 
    bcontent: 'this is a Content!', 
    bdate: new Date() 
}); 

var user1 = User.build({ 
    uname: 'www', 
    uregDate: new Date() 
}); 

var user2 = User.build({ 
    uname: 'www2', 
    uregDate: new Date() 
}); 

blog 
    .save() 
    .success(function() { 
     console.log('blog save suc'); 
    }); 

user1 
    .save() 
    .success(function() { 
     console.log('user save suc') 
    }); 
user2 
    .save() 
    .success(function() { 
     console.log('user save suc') 
    }); 

blog 
    .setUsers([user1,user2])  
    .success(function() { 
     console.log('saved') 
    }) 
    .error(function (err) { 
     console.log(err); 
    }); 
// blog.getUsers() 
// .success(function (ascUser) { 
//  console.log(ascUser); 
// }); 


sequelize 
    .sync() 
    .success(function() { 
     res.send('createTable ok!'); 
    }) 
    .error(function() { 
     res.send('createTable falied!');  
    }); 

}

И я получил ошибку: Error: ER_BAD_FIELD_ERROR: Неизвестный столбец 'user.id' в «где п .... кто может мне помочь? thx a lot

ответ

1

Для чего предназначены ставки и uid? Sequelize автоматически сделает идентификатор для вас, поэтому, если все это используется, вы должны удалить их, если они не требуются. Я не уверен, но я предполагаю, что если вы создадите первичный ключ с автоматическим добавлением, который Sequelize не может автоматически создать поле id, думая, что вы хотите использовать его вместо этого. Но ассоциации ожидают, что столбец будет id. Опять же, не уверен, почему, но я уверен, что если вы удалите эти поля ставок и uid, они будут работать так, как вы ожидаете.

Смежные вопросы