我正在开发一个基于mean.js的Web应用程序,该应用程序的一部分是带有标签的项目,类似于一个博客网站,每个博客条目都具有标签。
我到处搜索了一个很好的示例/教程,解释了使用mongodb / mongoose创建多对多关系的最佳方法,但是我似乎找不到任何东西。
每个项目可以有多个标签,我希望用户能够找到具有特定标签的所有项目。
对于实现此目标的正确方法,我将不胜感激。 TIA
最佳答案
对于多对多关系,我发现mongoose-relationship确实很有用。
这是使用mongoose-relationship模块解决该问题的示例:
// In TagsModel.js file ----------------------------------------------
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var relationship = require("mongoose-relationship");
var tagSchema = new schema({
projects: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Project',
childPath: 'tags'
}],
....
});
tagSchema.plugin(relationship, {
relationshipPathName: 'projects'
});
var tagModel = mongoose.model('Tag', tagSchema);
--------------------------------------------------------------------
// In ProjectModel.js file -----------------------------------------
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var Projects = new Schema({
tags : [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Tag'
}],
...
});
var tagModel = mongoose.model('Project', tagSchema);
使用此模型结构,您将能够按特定标签和按项目标签查找项目。
关于node.js - Mongodb多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34373019/