Данные кампании хранятся за исключением ссылки на пользователя в коллекции кампании MongoDB. Как отобразить только те кампании, которые были созданы пользователем, но не все кампании каждым пользователем? Мне нужно это после того, как пользователь вошел на сайт.
Схема кампании
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var campaignSchema = new Schema({
Title: {type: String},
Description: { type: String },
Rules: {} ,
Banner: { type: String },
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
});
module.exports = mongoose.model('Campaigns', campaignSchema);
Схема пользователя
const bcrypt = require('bcryptjs');
const crypto = require('crypto');
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
username: String,
email: { type: String, unique: true },
password: String,
phonenumber: Number,
passwordResetToken: String,
passwordResetExpires: Date,
emailVerificationToken: String,
emailVerified: Boolean,
snapchat: String,
facebook: String,
twitter: String,
google: String,
github: String,
instagram: String,
linkedin: String,
steam: String,
quickbooks: String,
tokens: Array,
profile: {
name: String,
gender: String,
location: String,
website: String,
picture: String
}
}, { timestamps: true });
/**
* Password hash middleware.
*/
userSchema.pre('save', function save(next) {
const user = this;
if (!user.isModified('password')) { return next(); }
bcrypt.genSalt(10, (err, salt) => {
if (err) { return next(err); }
bcrypt.hash(user.password, salt, (err, hash) => {
if (err) { return next(err); }
user.password = hash;
next();
});
});
});
/**
* Helper method for validating user's password.
*/
userSchema.methods.comparePassword = function comparePassword(candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.password, (err, isMatch) => {
cb(err, isMatch);
});
};
/**
* Helper method for getting user's gravatar.
*/
userSchema.methods.gravatar = function gravatar(size) {
if (!size) {
size = 100;
}
if (!this.email) {
return `https://gravatar.com/avatar/?s=${size}&d=blank`;
}
const md5 = crypto.createHash('md5').update(this.email).digest('hex');
return `https://gravatar.com/avatar/${md5}?s=${size}&d=blank`;
};
const User = mongoose.model('User', userSchema);
module.exports = User;
Маршрут для отображения моих кампаний, созданных пользователем. Здесь я хочу отправить сведения о кампании, созданные пользователем.
router.get('/camptab', function(req, res, next) {
User.findById({ userid:req.user.id })
.populate('campaign').exec((err, campaign) => {
res.render('camptab', { camplist : campaign });
})
});
Данные о кампании хранятся, кроме ссылки на пользователя в коллекции кампаний MongoDB. Как отобразить только те кампании, которые были созданы пользователем, но не все кампании каждым пользователем? Мне нужно это после того, как пользователь зашел на сайт.