- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在以“多对多”关系保存数据时遇到问题。
这是我的模型:
var CoursePeople = bookshelf.Model.extend({
tableName: 'course_people'
});
var Course = bookshelf.Model.extend({
tableName: 'course',
users: function(){
return this.belongsToMany(User);
}
});
var City = bookshelf.Model.extend({
tableName: 'city',
users: function(){
return this.hasMany(User);
}
});
var User = bookshelf.Model.extend({
tableName: 'people',
city: function(){
return this.belongsTo(City);
},
courses: function(){
return this.belongsToMany(Course);
}
});
挑战在于,如何将我在数组中获得的 ID 插入到我的数据库(名为“course_people”)的联结表中?
到目前为止,这是我的代码:
app.post('/users/', function(req, res) {
console.log(req.body);
var courses_ids = req.body.courses_ids; //array of ids
delete req.body.courses_ids;
new User(req.body).save().then(function(user){
console.log(user.id);
//How to store the ids in the junction table?
}).catch(function(error){
console.log(error);
});
});
再次感谢您的宝贵时间和建议!
最佳答案
你想要在这里做的是将 id 附加到你的关系中,如下所示:
app.post('/users/', function(req,
console.log(req.body);
var courses_ids = req.body.courses_ids; //array of ids
delete req.body.courses_ids;
new User(req.body).save()
.then(function(user){
// this is important
return user.courses().attach(courses_ids);
}).catch(function(error){
console.log(error);
});
});
官方文档中也有说明:https://bookshelfjs.org/api.html#Collection-instance-attach
关于node.js - Bookshelf.js - 如何保存多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715684/
我想实现这一目标 SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng )
我要表演WHERE - IN查询/操作但正常的地方给出错误。 我要这个 select * from `calendar_event_rsvp` where `event_id` in ('1', '2
我正在尝试使用 knex 进行简单的计数(因为它似乎是 to not be supported by bookshelf yet )。以下代码正在运行: bookshelf.knex('hosts')
我想创建一个脚本作为 cron 任务在我的服务器后台运行。 我希望脚本能够访问 sails 环境(即加载所有模块,尤其是 bookshelf 和 knex,以及数据库连接)。 这样我就可以创建一个看起
我正在尝试播种,保存在用户中,然后获取 userId 并插入到帐户表中: exports.seed = function(knex, Promise) { return Promise.join(
我正在使用 knex 和书架,我的表由作者、标题、内容、计数组成,每个数据如下所示: author: 'John Doe', title: 'aaaaa', content: 'aaaaaaaa' c
我有2个型号 Book: id, name, data (json) Author: id, name 我想用Book方法扩展author模型,该方法在查询withRelated时返回作者。如果我在a
如何使用事务处理 t,我想确保在保存记录之前成功删除该行: var Roles = bookshelf.Collection.extend({ model: Role ); Role.whe
我一直在做许多操作,我希望有一种方法可以“扩展”knex 来完成它们。 我想要类似的东西: oneExists result = knex.count(id).from('table').wh
我正在与 Bookshelf.js 作斗争,希望有人能帮我一把。 我的客户拥有各种类型的联系人(电子邮件地址、Facebook、Skype 等)。所以我分成三个表来标准化类型。我似乎无法找到如何正确查
我正在尝试使用 Express/Bookshelf/Awesomeplete 创建自动完成搜索。 我一直在试图找出如何使用像这样的Where Like 查询将搜索词传递到Bookshelf,我正在从P
我想监控对我的 API 数据库的查询所花费的时间。我使用 Bookshelf 插件 bookshelf-signals 创建了以下函数。 : bookshelf.on('fetching', () =
以下 Bookshelf 模型在保存模型时对用户密码进行哈希处理,唯一的问题是如果我将 model.set() 调用更改为 model.save() 它进入无限保存/更改循环。 var User =
我需要遍历 Bookshelf 集合中的所有模型,计算一些信息,然后将该信息存储回每个模型。为了回滚错误,我在单个事务中执行此操作很重要。 我遇到的问题是我真正能想到的唯一方法是使用 Promise.
我正在使用 karma-jasmine、webpact 运行单元测试。我尝试使用 bookshelf 在 mysql 数据库中插入一条记录。我收到以下错误消息: ReferenceError:书架未定
我正在开发一个已docker化的express.js应用程序。这是我提供给书架的配置信息。 { "database_dev" : { "client": "mysql",
我正在努力弄清楚如何与 Bookshelf.js 和 postgres 建立深厚的关系。 假设我有三个模型,User、Org 和 UserRole ... User 和 Org 具有多对多关系。 Us
Bookshelf.js 中 Collections 的 attach 和 updatePivot 方法似乎都作用于多对多关系,但它们似乎都没有保存或更新( upsert) 多对多关系项。运行 att
我正在尝试使用 bookshelf.js 作为 Postgresql 的 ORM 在 node.js 应用程序中实现基于 Angular 色的访问控制。我有以下架构: USERS ROLES RI
在一个原始的 MySQL 查询中,我有这样的东西: Select total_sales - over_head_costs As net_sales from departments; 如何使用 B
我是一名优秀的程序员,十分优秀!