Mongoose:如何将新值推送到特定键中?
Posted
技术标签:
【中文标题】Mongoose:如何将新值推送到特定键中?【英文标题】:Mongoose: How to push new value into specific key? 【发布时间】:2021-12-27 17:46:43 【问题描述】:我有这个函数可以更新我的任务集合。问题是如何使用 $push 将新值添加到特定附件的数组中。
架构
const taskSchema = mongoose.Schema(
projectId:
type: mongoose.Schema.Types.ObjectId,
ref: 'projectModel',
,
attachments: [
fileThumbnail: type: String ,
name: type: String ,
size: type: Number ,
uploadDate: type: String ,
status:
type: Boolean,
default: true,
,
,
],
);
任务控制器
export const updateTaskById = async (req, res) =>
try
const
_id,
projectId,
attachments,
= req.body;
const task = await taskModel.findById(req.params.id);
if (task)
task.invitedPeopleId = invitedPeopleId || task.invitedPeopleId;
await task.save(
validateBeforeSave: false,
);
catch (error)
console.log(error.message);
;
我尝试过的解决方案
taskModel.updateOne(
projectId: projectId ,
$push: attachments: attachments ,
);
【问题讨论】:
【参考方案1】:您可能正在混淆模型和架构,a common misunderstanding。
您创建了一个架构,但没有从该架构编译模型。这就是您编译模型的方式。
const Task = mongoose.model('task', TaskSchema, 'tasks')
export default Task
然后,在您的taskController
中,导入模型以操作文档。
import Task from '../models/task.model.js'
最后使用updateOne
方法修改文档:
Task.updateOne(
projectId: 1,
,
$push:
attachments:
name: 'file4',
size: 4,
,
,
)
这个Mongo playground 演示了更新。
【讨论】:
以上是关于Mongoose:如何将新值推送到特定键中?的主要内容,如果未能解决你的问题,请参考以下文章