Please check your agent type and version and read on or switch to the right documentation.
Smart hasMany relationship in mongoDB
Context: As a user I want to display records that have a belongsTo relationship to another record as related data of this record.
Parent collection: user
Child collection: visualization
Models definition
models/user.js
// This model was generated by Lumber. However, you remain in control of your models.// Learn how here: <https://docs.forestadmin.com/documentation/v/v6/reference-guide/models/enrich-your-models>constmongoose=require('mongoose');// This section contains the properties of your model, mapped to your collection's properties.// Learn more here: <https://docs.forestadmin.com/documentation/v/v6/reference-guide/models/enrich-your-models#declaring-a-new-field-in-a-model>constschema=mongoose.Schema( { avatar_link: String, client: { type:mongoose.Schema.Types.ObjectId, ref:'client' }, date_added: Date, email: String, first_name: String, last_name: String, user_type: String, }, { timestamps:false, });module.exports=mongoose.model('user', schema,'user');
models/visualization.js
// This model was generated by Lumber. However, you remain in control of your models.// Learn how here: <https://docs.forestadmin.com/documentation/v/v6/reference-guide/models/enrich-your-models>constmongoose=require('mongoose');// This section contains the properties of your model, mapped to your collection's properties.// Learn more here: <https://docs.forestadmin.com/documentation/v/v6/reference-guide/models/enrich-your-models#declaring-a-new-field-in-a-model>constschema=mongoose.Schema( { description: String, name: String, user: { type:mongoose.Schema.Types.ObjectId, ref:'user' }, visualization_type: String, }, { timestamps:false, });module.exports=mongoose.model('visualization', schema,'visualization');
Declaration of the relationship
As the relationship that is not present in your database structure, declare it at the level of the forest folder.
forest/user.js
const { collection } =require('forest-express-mongoose');const { customFieldsStyles } =require('../style/fields-style.js');// This file allows you to add to your Forest UI:// - Smart actions: <https://docs.forestadmin.com/documentation/reference-guide/actions/create-and-manage-smart-actions>// - Smart fields: <https://docs.forestadmin.com/documentation/reference-guide/fields/create-and-manage-smart-fields>// - Smart relationships: <https://docs.forestadmin.com/documentation/reference-guide/relationships/create-a-smart-relationship>// - Smart segments: <https://docs.forestadmin.com/documentation/reference-guide/segments/smart-segments>collection('user', { actions: [], fields: [ { field:'visualizations', type: ['String'], reference:'visualization._id', }, ], segments: [],});
Implementation of the get route for the relationship
The route to get the related visualizations when you are on a user page needs to be implemented in the routes folder.