将反向虚拟财产获取到其自身。适用于express,但不适用于nest.js

将反向虚拟财产获取到其自身。适用于express,但不适用于nest.js,express,mongoose,nestjs,Express,Mongoose,Nestjs,试图通过mongodb中的虚拟属性实现反向m2m关系 例如,这里是express.js上的tour模式: // tour.model.js const mongoose = require('mongoose'); const tourSchema = new mongoose.Schema({ name: { type: String, unique: true }, rating: { type: Number, default: 4.5

试图通过mongodb中的虚拟属性实现反向m2m关系

例如,这里是express.js上的tour模式:

// tour.model.js

const mongoose = require('mongoose');

const tourSchema = new mongoose.Schema({
  name: {
    type: String,
    unique: true
  },
  rating: {
    type: Number,
    default: 4.5
  },
  price: {
    type: Number,
  },
  parent_tours: {
    type: [mongoose.Schema.ObjectId],
    ref: 'Tour'
  }
});

const Tour = mongoose.model('Tour', tourSchema);


tourSchema.virtual('child_tours', {
  ref: 'Tour',
  foreignField: 'parent_tours',
  localField: '_id',
  justOne: false
});


module.exports = Tour;

要在巡更中指定父巡更,并通过“填充”获取父巡更的子项:

// tour.controller.js

const Tour = require('./../models/tour.model');

exports.getSingle = async (req, res) => {
  let tour = await Tour.findById(req.params.id).populate('child_tours');
  res.status(200).json({
    status: 'success',
    data: tour
  });
};
邮递员:

{
    "status": "success",
    "data": {
        "rating": 4.5,
        "parent_tours": [],
        "_id": "60a0dc8a9273e508d060a49e",
        "name": "egypt",
        "price": 20,
        "__v": 0,
        "child_tours": [
            {
                "rating": 4.5,
                "parent_tours": [
                    "60a0dc8a9273e508d060a49e",
                    "60a15e79bc3f8c2824bccff1"
                ],
                "_id": "60af88148642b204300e751f",
                "price": 42,
                "name": "Brazil",
                "__v": 0
            }
        ]
    }
}
{
    "parent_projects": [],
    "_id": "60afb3422e8c451298f51750",
    "name": "some_project",
    "__v": 0
}
所以它起作用了。 现在正在尝试nestjs(有一个项目实例而不是一个教程)

这次两个孩子都没有。我的错在哪里

nestjs项目依赖项:

  "dependencies": {
    "@nestjs/common": "^7.6.15",
    "@nestjs/core": "^7.6.15",
    "@nestjs/mapped-types": "github:nestjs/mapped-types",
    "@nestjs/mongoose": "^7.2.4",
    "@nestjs/platform-express": "^7.6.15",
    "@nestjs/swagger": "github:nestjs/swagger",
    "class-transformer": "^0.4.0",
    "class-validator": "^0.13.1",
    "mongoose": "^5.12.7",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.6",
    "swagger-ui-express": "^4.1.6"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.6.0",
    "@nestjs/schematics": "^7.3.0",
    "@nestjs/testing": "^7.6.15",
    "@types/express": "^4.17.11",
    "@types/jest": "^26.0.22",
    "@types/node": "^14.14.36",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.19.0",
    "@typescript-eslint/parser": "^4.19.0",
    "eslint": "^7.22.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-prettier": "^3.3.1",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "supertest": "^6.1.3",
    "ts-jest": "^26.5.4",
    "ts-loader": "^8.0.18",
    "ts-node": "^9.1.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.2.3"
  },
  "dependencies": {
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "mongoose": "^5.12.7",
    "morgan": "^1.10.0",
    "nodemon": "^2.0.7"
  },
  "devDependencies": {
    "@babel/eslint-parser": "^7.14.3",
    "eslint": "^7.26.0"
  }
表示项目依赖关系:

  "dependencies": {
    "@nestjs/common": "^7.6.15",
    "@nestjs/core": "^7.6.15",
    "@nestjs/mapped-types": "github:nestjs/mapped-types",
    "@nestjs/mongoose": "^7.2.4",
    "@nestjs/platform-express": "^7.6.15",
    "@nestjs/swagger": "github:nestjs/swagger",
    "class-transformer": "^0.4.0",
    "class-validator": "^0.13.1",
    "mongoose": "^5.12.7",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.6",
    "swagger-ui-express": "^4.1.6"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.6.0",
    "@nestjs/schematics": "^7.3.0",
    "@nestjs/testing": "^7.6.15",
    "@types/express": "^4.17.11",
    "@types/jest": "^26.0.22",
    "@types/node": "^14.14.36",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.19.0",
    "@typescript-eslint/parser": "^4.19.0",
    "eslint": "^7.22.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-prettier": "^3.3.1",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "supertest": "^6.1.3",
    "ts-jest": "^26.5.4",
    "ts-loader": "^8.0.18",
    "ts-node": "^9.1.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.2.3"
  },
  "dependencies": {
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "mongoose": "^5.12.7",
    "morgan": "^1.10.0",
    "nodemon": "^2.0.7"
  },
  "devDependencies": {
    "@babel/eslint-parser": "^7.14.3",
    "eslint": "^7.26.0"
  }
  "dependencies": {
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "mongoose": "^5.12.7",
    "morgan": "^1.10.0",
    "nodemon": "^2.0.7"
  },
  "devDependencies": {
    "@babel/eslint-parser": "^7.14.3",
    "eslint": "^7.26.0"
  }