如何与mongoosejs实现"跟随" / has-many关系?

时间:2015-10-08 21:55:53

标签: node.js mongodb express mongoose

我正在用mongoose和express创建一个应用程序。我有用户和场地模型。

我希望用户关注场地并查看他们关注的所有场地。我还想在场地的页面上显示所有关注场地的用户。用户跟随许多场地,场地有许多用户关注者。

与猫鼬ORM实现这种关系的最佳方式是什么?我的模特应该是什么样的?操作后的CRUD怎么样?

我见过mongoose-relationship,但似乎不太受欢迎。什么是mongoose.js社区解决方案来实现这个"以下"数据库关系?

1 个答案:

答案 0 :(得分:0)

用户模型/架构将有一个"场所以下"包含venue._id的数组。场地模型/ Schema将有一个" usersFollowing"包含user._id的数组。

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。