MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да получа имената от id в mongoose?

Трябва да попълните по следния начин:(също така е добра идея да изключите потребителските пароли)

 Question.find({})
    .populate("user", "-password")
    .populate("answered.user", "-password");

Също така имам няколко предложения за код:

Обикновено използваме главна първа буква и имена в единствено число за модели, като потребител.

user.js

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  date: {
    type: Date,
    default: Date.now
  }
});

const User = mongoose.model("User", UserSchema);

module.exports = User;

question.js

const mongoose = require("mongoose");

const QuestionSchema = new mongoose.Schema({
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User"
  },
  question: {
    type: String
  },
  name: {
    type: String
  },
  answered: [
    {
      user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "User"
      }
    }
  ]
});

const Question = mongoose.model("Question", QuestionSchema);

module.exports = Question;

И можете да използвате следната заявка за попълване на потребители:

const Question = require("../models/question");

router.get("/question", async (req, res) => {
  const questions = await Question.find({})
    .populate("user", "-password")
    .populate("answered.user", "-password");

  res.send(questions);
});

Ето примерен резултат:

[
    {
        "_id": "5dc12a6aa875cd0ca8b871eb",
        "user": {
            "_id": "5dc129eda875cd0ca8b871e8",
            "name": "user 1",
            "email": "[email protected]",
            "date": "2019-11-05T07:51:09.625Z",
            "__v": 0
        },
        "question": "question 1",
        "name": "question 1 name",
        "answered": [
            {
                "_id": "5dc12a6aa875cd0ca8b871ed",
                "user": {
                    "_id": "5dc12a00a875cd0ca8b871e9",
                    "name": "user 2",
                    "email": "[email protected]",
                    "date": "2019-11-05T07:51:28.892Z",
                    "__v": 0
                }
            },
            {
                "_id": "5dc12a6aa875cd0ca8b871ec",
                "user": {
                    "_id": "5dc12a0aa875cd0ca8b871ea",
                    "name": "user 3",
                    "email": "[email protected]",
                    "date": "2019-11-05T07:51:38.060Z",
                    "__v": 0
                }
            }
        ],
        "__v": 0
    }
]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Актуализиране на списък с вградени документи в mongoengine

  2. Приложението Meteor се изпълняваше с pm2 ФАТАЛНА ГРЕШКА:CALL_AND_RETRY_LAST Неуспешно разпределение - JavaScript купчината няма памет

  3. Прекратяване на MongoDB при изпълнение на команда mongod на терминал

  4. Как да създавате индекси в MongoDB чрез .NET

  5. Контролен списък за разработка и операции за MongoDB