gpt4 book ai didi

mysql - sails.js 多对多关系连接表的额外字段

转载 作者:可可西里 更新时间:2023-11-01 07:37:01 24 4
gpt4 key购买 nike

我有两个模型:

Order.js

module.exports = {
attributes: {
//Id is generated by mongo and is a primary key
address: {
type: 'string',
required: true,
size: 1000
},
status: {
type: 'string',
required: true,
size: 15,
defaultsTo: 'pending',
enum: ['pending', 'processing', 'cancelled']
},
total: {
type: 'string',
required: true,
size: 50
},
menues: {
collection: 'menu',
via: 'orders',
dominant: true
},
customer: {
model: 'customer'
}
}
};

Menu.js

module.exports = {
attributes: {
//Id is generated by mongo
name: {
type: 'string',
required: true,
size: 255
},
description: {
type: 'string',
required: true,
size: 1000
},
price: {
type: 'string',
required: true,
size: 15
},
picture: {
type: 'string',
size: 255
},
//Relations
orders: {
collection: 'order',
via: 'menues'
}
}
};

有一个多对多的关系,它完美地工作并创建了一个 menu_orders__order_menues 集合,一切都很好。

但我需要为每个 Menu 按顺序保存数量。比如菜单 id“1”的数量是 2 等等。

因此,额外的数据是数量:每个订单的每个菜单都应该有确定的数量

执行此操作的最佳方法是什么,以及如何将其存储在数据库中?我想以某种方式将它存储在关系表中,但我不知道如何做。

请让我知道最正确和可接受的解决方案。

附言我目前使用 sails-mongo,但很快就会迁移到 MySQLPostgres,所以我需要以相对方式完成此操作。

最佳答案

quantity 字段添加到您的 Menu 模型架构中,并可以使用 afterCreate 函数为其设置值。

订单.js

module.exports = {
attributes: {
address: {
type: 'string',
required: true,
size: 1000
},
status: {
type: 'string',
required: true,
size: 15,
defaultsTo: 'pending',
enum: ['pending', 'processing', 'cancelled']
},
total: {
type: 'string',
required: true,
size: 50
},
menues: {
collection: 'menu',
via: 'orders',
dominant: true
},
customer: {
model: 'customer'
}
},
afterCreate: function (order, cb) {
Menu.find(order.menues, function (err, menues) {
if (err) return cb(err);
async.each(menues, function (menu, next) {
menu.quantity++;
menu.save(next);
}, cb);
});
}
};

菜单.js

module.exports = {
attributes: {
name: {
type: 'string',
required: true,
size: 255
},
description: {
type: 'string',
required: true,
size: 1000
},
price: {
type: 'string',
required: true,
size: 15
},
picture: {
type: 'string',
size: 255
},
quantity: {
type: 'number',
defaultsTo: 0
},
orders: {
collection: 'order',
via: 'menues'
}
}
};

这不是一个完整的解决方案。您还必须处理 afterUpdateafterDestroy 函数。

关于mysql - sails.js 多对多关系连接表的额外字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com