Как соединить две таблицы, используя MongoDB + Node.js API? - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок для node.js, и mongodb создал API, используя google

Создал Api, используя monogdb + nodejs.

Работает нормально с операцией CURD для одной таблицы

но не знаю как присоединиться node.js

request.model. js

const mongoose = require('mongoose');

const RequestSchema = mongoose.Schema({
    userId: String,
    title: String,
    description: String
}, {
    timestamps: true
});

module.exports = mongoose.model('Request', RequestSchema);

user.model. js

const mongoose = require('mongoose');

const UserSchema = mongoose.Schema({
    firstname: String,
    lastname: String
}, {
    timestamps: true
});

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

user.controller. js

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

// Retrieve and return all notes from the database.
exports.findAll = (req, res) => {
  jwt.verify(req.token, 'secretkey', (err, authData) => {
    if(err){
      res.sendStatus(403);
    }else{
      User.find()
      .then(user => {
        res.send(user);
      }).catch(err => {
        res.status(500).send({
          message: err.message || "Some error occurred while retrieving user."
        });
      });
    }
  })
};

request.controller. js

const Request = require('../models/request.model.js');

// Retrieve and return all notes from the database.
exports.findAll = (req, res) => {
  jwt.verify(req.token, 'secretkey', (err, authData) => {
    if(err){
      res.sendStatus(403);
    }else{
      Request.find()
      .then(request => {
        res.send(request);
      }).catch(err => {
        res.status(500).send({
          message: err.message || "Some error occurred while retrieving request."
        });
      });
    }
  })
};

запрос структура данных таблицы

{
    "_id": {
        "$oid": "5e3bef0be7b75760bf31d4c8"
    },
    "userId": "5e3bdf5919c9d8586d7f2455",
    "title": "test title",
    "description": "test desc",
    "createdAt": {
        "$date": {
            "$numberLong": "1580986123184"
        }
    },
    "updatedAt": {
        "$date": {
            "$numberLong": "1580986123184"
        }
    },
    "__v": {
        "$numberInt": "0"
    }
}

пользователь структура данных таблицы

{
    "_id": {
        "$oid": "5e3bdf5919c9d8586d7f2455"
    },
    "firstname": "bhavik",
    "lastname": "gajjar",
    "createdAt": {
        "$date": {
            "$numberLong": "1580982105830"
        }
    },
    "updatedAt": {
        "$date": {
            "$numberLong": "1580982105830"
        }
    },
    "__v": {
        "$numberInt": "0"
    }
}

Заранее спасибо

1 Ответ

1 голос
/ 06 февраля 2020

Если вы хотите запросить запросы с присоединенными пользователями, сделайте следующее:

Request.aggregate([
   {
     $lookup: {
        from: "Users", // collection name in db
        localField: "userId",
        foreignField: "_id",
        as: "user"
     }
   }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...