我还不确定如何使用knex进行迁移.这是我到目前为止所拥有的.它可以工作up,但down即使foreign_key_checks = 0,也会给我FK约束错误.
exports.up = function(knex, Promise) {
return Promise.all([
knex.raw('SET foreign_key_checks = 0;'),
/* CREATE Member table */
knex.schema.createTable('Member', function (table) {
table.bigIncrements('id').primary().unsigned();
table.string('email',50);
table.string('password');
/* CREATE FKS */
table.bigInteger('ReferralId').unsigned().index();
table.bigInteger('AddressId').unsigned().index().inTable('Address').references('id');
}),
/* CREATE Address table */
knex.schema.createTable('Address', function (table) {
table.bigIncrements('id').primary().unsigned();
table.index(['city','state','zip']);
table.string('city',50).notNullable();
table.string('state',2).notNullable();
table.integer('zip',5).unsigned().notNullable();
}),
knex.raw('SET foreign_key_checks = 1;')
]);
};
exports.down = function(knex, Promise) {
return Promise.all([
knex.raw('SET foreign_key_checks = 0;'),
knex.schema.dropTable('Address'),
knex.schema.dropTable('Member'),
knex.raw('SET foreign_key_checks = 1;')
]);
};
Run Code Online (Sandbox Code Playgroud) 我已将sequelizejs集成到我的快速框架中.我配置了所有模型,并试图用它构建我的第一个查询.
我一直收到错误"错误:模型与ModelTwo没有关联!"
app.get('/',function(req,res){
db.Member.findAll({include:[{model:db.MemberProfile,as:'Profile'}]})
.success(function(users){
if(users){
res.json(users);
}else{
res.send('no users');
}
});
});
Run Code Online (Sandbox Code Playgroud)
// model.js
module.exports = function(sequelize,sql) {
return sequelize.define('Model', {
//attributes
});
Model.hasOne('ModelTwo',{foreignKey:'model_id'});
};
Run Code Online (Sandbox Code Playgroud)
//model_two.js
module.exports = function(sequelize,sql) {
return sequelize.define('ModelTwo', {
//attributes
});
//no relationship defined. Tried ModelTwo.hasMany('Model',{foreignKey:'id'});
//but it yields the same resulting error
};
Run Code Online (Sandbox Code Playgroud)
关于可能出错的任何想法?我正在使用最新版本的sequelize 1.7.0-rc6.
我有一个问题,控制器执行两次,但我没有我能看到的重复项(即使运行一个案例sensiTIve搜索我的文件只显示一个在路由配置和我的实际控制器).
路线配置:
$routeProvider.when('/cb159e1ec61d0613f10ab397d8bd6782',{
templateUrl: view+'passwordreset.html',
controller:'passwordreset'
});
Run Code Online (Sandbox Code Playgroud)
控制器:
App.controller('passwordreset',['$scope','$http',
function($scope,$http){
$scope.token='asdf'
console.log($scope.token); // <-- logs 2x to console
}]);
Run Code Online (Sandbox Code Playgroud)
passwordreset.html:
<div class="row">
<div class="small-12 columns">
<fieldset class="content-box">
password reset {{token}}
</fieldset>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
此外,我已经创建了一个新的路线并尝试过,仍然会记录两次.我也清除了我的缓存.有些控制器执行一次,有的两次(我在一些控制器中发出警报,一些显示一次,一些显示两次)
另一个例子:
//route config
$routeProvider.when('/', {
templateUrl: view+'home',
controller:'Home'
});
//template
<div ng-controller="testing">a</div>
//controller
Lmu.controller('Home',function($scope){
$scope.home='home';
alert($scope.home); <-- alerts 2x (two scopes for Home controller are created)
});
Run Code Online (Sandbox Code Playgroud) 假设我有 2 个模型,用户和事件。它们被设置为 am:m 关系User.belongsToMany(Event)和Event.belongsToMany(User). 这一切都很好,但是当我这样做时User.findAndCountAll({include: [{model: Event}]}),result.rows 的结果 json 看起来像
[
...
{
userdata...,
events: [ // included by model relation
...included event data...,
junction_table: { // I dont want this data sent back to client, just above data
...data i dont want...
}
}
...
]
Run Code Online (Sandbox Code Playgroud)
我想要
[
{
userdata...,
events: [
{ included event data without junction_table }
]
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法去掉由于某种原因自动包含在每个事件中的junction_table,而无需.mapping 数据并重建它?我宁愿不一直通过网络将我不需要的所有这些数据发送给客户端。我尝试只attributes: []在模型上指定,但它不会消失。