ничего не получая от lookup mongodb - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу получить все сообщения с их авторскими данными из пользовательской модели.Я использую поиск mongoDB.Но получается пустой массив.Я сопоставляю author.uid от поста до _id пользователя.Я хочу получить все сообщения с их авторскими данными из пользовательской модели.Я использую поиск mongoDB.Но получается пустой массив.Я сопоставляю author.uid от поста до _id пользователя.// Пост-модель

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const postSchema = new Schema({
category : {
    type: String
},
content: {
    type: String
},
caption: {
    type: String
},
tags: [{
    type: String
}],
createdAt: {
    type: Number,
    required: true
},
 author: {
    uid:{
        type: String,
        required: true
    },
    name:{
        type: String
    }
},
likes:[{
    type:String
}],

comments:[{
    type: mongoose.Schema.Types.ObjectId,
    ref: "Comment"
}]

});

module.exports = mongoose.model('Post', postSchema);

// Модель пользователя

const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
_id: {
    type: String,
    required: true
},
name:{
    type: String,
    required: true
},
avatar:{
    type:String
},
bio:{
    type: String
},
followers:[
    {
        type: String 
    }
],
followings:[
    {
        type: String
    }
],
posts:[{
    type: mongoose.Schema.Types.ObjectId,
    ref: "Post"
}]
});

module.exports = mongoose.model('User', userSchema);

// Узел js

const express = require('express');
const router = express.Router();

const Post = require('../../models/Post');
const User = require('../../models/user');

router.get('/', (req, res) => {
Post.aggregate([
    {
        $lookup:
            {
                from: 'User',
                localField: "author.uid",
                foreignField: "_id",
                as: "creator"
            }
    }
]).exec((err, result) => {
    if (err) {
        console.log("error" ,err)
    }
    if (result) {
        console.log(JSON.stringify(result));
    }
});    
});

// Вывод

 {"_id":"5b9c7f30d",
 "author": {"uid":"y08RxtsHe","name":"Sujoy Saha"},
 "tags": ["#lo"],
 "likes":[],  "comments[],

 "category":"image","content":"jsdnvs","caption":"standing 
 \n#lol","createdAt":1536982759517,"__v":0,"creator":[]}

Вы видите, я получаю пустой массив создателя.Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 17 сентября 2018

mongoose.js множественно (добавляет 's' после названия вашей модели), когда он создает коллекцию в MongoDb.

Можете ли вы попробовать from: 'users' в предложении $ lookup?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...