Sails.js 的类别和子类别产品层次结构
Categories and subcategories product hierarchy with Sails.js
我正在尝试使用 Sails.js 构建类似亚马逊的产品类别和子类别层次结构。
我从 many-to-many relation 开始,到目前为止我已经完成了一半。我现在所做的工作是类别,类别有链接到它的产品,下面是它的一个实例:
电脑配件 -> 蓝宝石 RX 580、蓝宝石 5700XT、海盗船 550W PSU
以下是 many-to-many relation 模型的外观:
// Product.js
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true,
allowNull: false
},
keywords: {
type: 'json',
required: false
},
// Reference to Category
category: {
collection: 'category',
via: 'product'
},
},
};
// Category.js
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
// Reference to Product
product: {
collection: 'product',
via: 'category'
}
}
};
我想从中构建的是为类别创建子类别,下面是它的一个实例:
电脑配件 -> 显卡 -> 蓝宝石 RX 580、蓝宝石 5700XT
电脑配件 -> 电源 -> Corsair 550W PSU
我对 JavaScript 和 Sails 还很陌生。任何建议将不胜感激。
您可能需要一个叫做 Reflexive Association 的东西,然后您可以在 Category 模型中包含类似的东西:
// api/models/Category.js
parent: {
model: 'category'
}
children: {
collection: 'category',
via: 'parent'
}
如果需要保存值:
const parentId = 1;
await Category.addToCollection(parentId, 'children').members([2, 3, 4]);
然后当您需要填充关系字段时:
const categories = await Category.find().populate('children');
我正在尝试使用 Sails.js 构建类似亚马逊的产品类别和子类别层次结构。
我从 many-to-many relation 开始,到目前为止我已经完成了一半。我现在所做的工作是类别,类别有链接到它的产品,下面是它的一个实例:
电脑配件 -> 蓝宝石 RX 580、蓝宝石 5700XT、海盗船 550W PSU
以下是 many-to-many relation 模型的外观:
// Product.js
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true,
allowNull: false
},
keywords: {
type: 'json',
required: false
},
// Reference to Category
category: {
collection: 'category',
via: 'product'
},
},
};
// Category.js
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
// Reference to Product
product: {
collection: 'product',
via: 'category'
}
}
};
我想从中构建的是为类别创建子类别,下面是它的一个实例:
电脑配件 -> 显卡 -> 蓝宝石 RX 580、蓝宝石 5700XT
电脑配件 -> 电源 -> Corsair 550W PSU
我对 JavaScript 和 Sails 还很陌生。任何建议将不胜感激。
您可能需要一个叫做 Reflexive Association 的东西,然后您可以在 Category 模型中包含类似的东西:
// api/models/Category.js
parent: {
model: 'category'
}
children: {
collection: 'category',
via: 'parent'
}
如果需要保存值:
const parentId = 1;
await Category.addToCollection(parentId, 'children').members([2, 3, 4]);
然后当您需要填充关系字段时:
const categories = await Category.find().populate('children');