node.js - 如何在mongodb中将文件引用到对象
问题描述
我正在尝试在 mongodb 上上传一张图片,但我希望这张图片被引用到一个任务中,我不知道该怎么做,这里是代码
我在这里上传,如您所见,名称必须是字典
router.post('/',upload.single('dicionario'), async (req, res) => {
try{
const { title, description, tasks } = req.body
const project = await Project.create({title, description, user: req.userId });
const post = await Post.create({
name: req.file.originalname,
size: req.file.size,
key: req.file.filename,
url: ''
})
//console.log(req.file)
console.log(req.body)
await Promise.all(tasks.map( async task => {
const projectTask = new Task({...task, project: project._id})
await projectTask.save()
project.tasks.push(projectTask)
}))
await project.save()
return res.send({ project })
} catch(err) {
console.log(err)
return res.status(400).send({error: 'Error creating new project'})
}
})
这是任务的架构
const TaskSchema = new mongoose.Schema({
title:{
type: String,
required: true,
},
description:{
type: String,
required: true
},
dicionario:{
type: mongoose.Schema.Types.ObjectId,
ref: 'Post',
required: true
},
project: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Project',
required: true
},
assignedTo: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
completed:{
type:Boolean,
required:true,
default: false
},
createdAt:{
type: Date,
default: Date.now,
},
})
如您所见,他引用了字典中的帖子
这里是帖子的架构
const mongoose = require('../../database')
const bcrypt = require('bcryptjs')
const PostSchema= new mongoose.Schema({
name: String,
size: Number,
key: String,
url: String,
createdAt:{
type: Date,
default: Date.now,
},
})
module.exports = mongoose.model('Post', PostSchema)
这是邮递员中请求的图像
解决方案
推荐阅读
- javascript - 在测试项目中从源 json 文件创建新的 json
- angular - Angular 材质主题的问题
- laravel - 有没有办法只在更新屏幕上显示信息?
- flutter - maxLengthEnforced 在达到 maxLength 后仍然允许输入
- postgresql - 为什么函数 i PostgreSQL 不会引发异常?
- java - Selma - 自定义字段到字段映射错误
- python - Discord bot 删除错误消息?
- phoenix-framework - Phoenix 中指定的 app.html.eex 布局在哪里?
- python - 从 Wikipedia 页面抓取表格数据
- asp.net-core - asp.net 核心传递模型从控制器更改视图布局查看