Клуб childschema под родительским на мангусте - PullRequest
0 голосов
/ 11 мая 2018

Я использую модуль mongoose. У меня есть два файла схемы

//First User File
var mongoose = require('mongoose');
const UserActivitySchema = require('./useractivity')
//User Schema
var UserSchema = new mongoose.Schema({
    username: {
        type: String
    },
    activity: [UserActivitySchema]
});
var User = module.exports = mongoose.model('User', UserSchema, 'User');

Я уже пытался создать вложенный документ, но не смог его получить

//Second Schema i.e supposed to be child is on useractivity.js file
var mongoose = require('mongoose');
//User Activity Schema....011217
var UserActivitySchema = mongoose.Schema({
        message_count:{
            type: Number,
            default: 0
        }
});
exports.UserActivitySchema = UserActivitySchema;

Таким образом, он создаст запись следующим образом:

{
 "_id" : ObjectId("5ab38941ffbb87124c673862"),
 "username" : "peter",
 "activity" : []

}

То, что я хочу, это как это:

{
 "_id" : ObjectId("5ab38941ffbb87124c673862"),
 "username" : "peter",
 "activity" : {
   "message_count" : 0   
 } 
}

Любая помощь действительно ценится ..

1 Ответ

0 голосов
/ 11 мая 2018

Mongoose populate может помочь вам получить необходимые функциональные возможности.Вы можете узнать больше о populate здесь .Вы можете сделать это следующим образом:

Создать UserActivitySchema

var mongoose = require('mongoose');
var UserActivitySchema = mongoose.Schema({
        message_count:{
            type: Number,
            default: 0
        }
});
module.exports = mongoose.model('UserActivity', UserActivitySchema, 'UserActivity');

Теперь создайте UserSchema вот так

var mongoose = require('mongoose');
const UserActivitySchema = require('./useractivity')
//User Schema
var UserSchema = new mongoose.Schema({
    username: {
        type: String
    },
    activity: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'UserActivity',
    }
});
var User = module.exports = mongoose.model('User', UserSchema, 'User');

Теперь, пока вы сохраняете пользователя, сохраняйте _id из UserActivity в activity

Когда вы делаете запрос для получения пользователя, вы можете сделать это

User.findOne({_id: 5ab38941ffbb87124c673862})
.populate('UserActivity')
.exec(function(err, user) {
    // do stuff with returned user
});
...