【问题标题】:How to implement a "follows"/has-many relationship with mongoosejs?如何实现与 mongoosejs 的“关注”/有很多关系?
【发布时间】:2015-10-09 06:19:27
【问题描述】:
我正在使用 mongoose 和 express 创建一个应用程序。我有用户和场地模型。
我希望用户关注场地并查看他们关注的所有场地。我还想在场地页面上显示所有关注场地的用户。一个用户关注了很多场所,一个场所有很多用户关注者。
用 mongoose ORM 实现这种关系的最佳方式是什么?我的模型应该是什么样的? CRUD 后面的操作呢?
我见过mongoose-relationship,但似乎不是很受欢迎。实现这种“跟随”数据库关系的 mongoose.js 社区解决方案是什么?
【问题讨论】:
标签:
node.js
mongodb
express
mongoose
【解决方案1】:
用户模型/模式将有一个包含场地._id 的“venuesFollowing”数组。场地模型/模式将有一个包含 user._id 的“usersFollowing”数组。
var Mongoose = require('mongoose');
var Schema = Mongoose.Schema;
var Venue = require('./venue');
var userSchema = new Schema({
fullName: {type: String, required: true},
username: {type: String, required: true},
email: {type: String, required: true},
venuesFollowing: [{type: Mongoose.Schema.ObjectId , ref: 'Venue'}],
});
var User = Mongoose.model("User", userSchema);
module.exports = User;
您可以以此用户模型为基础来构建您的场地模型,并将场地关注替换为用户关注。您需要 Venue 模型,以便可以在此用户模型中引用它,反之亦然。您将能够通过他们的 ID 访问所有关注场地的用户,反之亦然,访问他们关注的用户和场地 ID。