将反向虚拟财产获取到其自身。适用于express,但不适用于nest.js
试图通过mongodb中的虚拟属性实现反向m2m关系 例如,这里是express.js上的tour模式:将反向虚拟财产获取到其自身。适用于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
// 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"
}