javascript - 如何在子集合中制作虚拟对象 - Mogoose
问题描述
在猫鼬中,我有一个带有图像(名称+分机)的对象(“目标”)。每个对象(“目标”)。具有其他对象的子集合,该对象再次包含图像(名称+扩展名)。
现在我已经能够为 target.image 创建一个虚拟对象。所以我得到了一个完整的位置 URL。但我无法为 target.upload.image 创建一个虚拟对象。
我怎样才能做到这一点?
const targetSchema = mongoose.Schema({
title: {
type: String, required: true
},
userId: {
type: String, required: true
},
........
image: {
type: String, required: true
},
uploads: [{
upload_image: {
type: String, required: true
},
upload_userId: {
type: String, required: true
},
}],
});
这是我的目标图像的虚拟
targetSchema.virtual('targetImgURL').get(function(){
let url = process.env.URL + ":" + process.env.PORT + "/public/images/targets/uploads/" + this.image
return url
});
解决方案
是的,我找到了解决方案。不幸的是,不可能一下子扣留所有东西。但这种方式并不是特别繁琐。请参阅下面的代码以获取解决方案。
const uploadSchema = mongoose.Schema({
upload_image: {
type: String, required: true
},
upload_userId: {
type: String, required: true
},
});
// Virtuals
uploadSchema.virtual('UploadImgURL').get(function(){
let url = process.env.URL + ":" + process.env.PORT + "/public/images/targets/answers/" + this.image
return url
});
const targetSchema = mongoose.Schema({
title: {
type: String, required: [true, 'A title is required']
},
....
uploads: [ uploadSchema ],
});
// Virtuals
targetSchema.virtual('targetImgURL').get(function(){
let url = process.env.URL + ":" + process.env.PORT + "/public/images/targets/uploads/" + this.image
return url
});
推荐阅读
- ios - 从单元格注销后访问登录屏幕视图控制器
- python - 简单的python字符串操作
- javascript - Next.js 和 Express 的 CORS 问题:对预检请求的响应未通过访问控制检查:
- amazon-s3 - 试图从 Lambda 获取图像,但我被拒绝访问。使用 Amplify 客户端库运行良好
- google-maps-api-3 - 谷歌地理编码 API - 每天免费请求?
- css - 来自 site.css 的 .netcore css
- wordpress - 为什么要使用 403 Forbidden Wordpress wp-admin?
- flutter - 简单问题:使用 Grpc web 调用 grpc API 的 Flutter 移动应用
- javascript - JavaScript 中的文本到矩阵
- tcp - 如果 TCP 负载平衡器/代理终止连接,如何传递响应?