Model.populate () не является возвращаемым документом в Mongoose - PullRequest
0 голосов
/ 03 мая 2020

У меня есть две схемы,

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

// Create the User Schema
const UserSchema = new Schema({
    email: {
        type: String
    },
    password: {
        type: String
    }
});

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

ИЛИ

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

// Create the Status Schema
const StatusSchema = new Schema({
    admin_id:{
        type: Schema.Types.ObjectId,
        ref: 'users'
    },
    text:{
        type: String
    },
});

module.exports = Status = mongoose.model("Status", StatusSchema, "Status");

, тогда я использую заполнить в моем API-маршруте :

router.get(
  "/",
  passport.authenticate("jwt", {
    session: false,
  }),
  (req, res) => {
    try {
      Status.find({}).populate('admin_id').exec(err, data=>{
        console.log(data); // return a blank array : []
        return res.sendStatus(200)
      })
    }
  } catch (error) {
      res.sendStatus(500);
    }
  }
);

Когда я вызываю этот маршрут, я получаю пустой массив [] .... Есть идеи, что я делаю неправильно? Я должен упомянуть, что я вставил записи в коллекцию состояний для admin_id

Есть ли другой способ сделать это?

1 Ответ

1 голос
/ 03 мая 2020

Есть много способов сделать это.

Вы можете использовать это,

Status.find({}).then((doc) => {
  if (doc) {
    Status.populate(doc, { path: "admin_id", model: "users" }, function (
      err,
      data
    ) {
      if (err) throw err;
      console.log(data); //here is your documents with admin user
    });
  }
});
...