javascript - 使用猫鼬从数组中删除单个项目
问题描述
我是网络开发新手,正在制作一个待办事项应用程序。我有以下架构和模型:
const tdSchema = new mongoose.Schema({
category: {
type: String,
required: true,
unique: true
},
tds: {
type: [{
type: String
}]
}
});
const ToDo = mongoose.model("ToDo", tdSchema);
下面是一个文档示例:
{ "_id" : ObjectId("5f7e2c3d1a151704382ce109"),
"todos" : [ "Update Resume", "Apply for jobs" ],
"category" : "Career", "__v" : 0 }
我想从数组“todos”中删除“更新简历”,同时保留文档中的所有其他内容。
如何使用 Mongoose JS 做到这一点?
解决方案
首先找到文档:
const doc = await ToDo.findOne({ _id: "5f7e2c3d1a151704382ce109" });
console.log(doc); // optional (used to illustrate how code works)
这将记录:
{ "_id" : ObjectId("5f7e2c3d1a151704382ce109"),
"todos" : [ "Update Resume", "Apply for jobs" ],
"category" : "Career", "__v" : 0 }
从这里只需访问“todos”并从中删除,就像从典型的 JavaScript 数组中删除一样。
doc.todos = doc.todos.filter(e => e !== "Update Resume");
然后保存您的文档:
const updated = await doc.save();
console.log(updated); // optional (used to illustrate how code works)
你会在你的日志中得到这个:
{ "_id" : ObjectId("5f7e2c3d1a151704382ce109"),
"todos" : [ "Apply for jobs" ],
"category" : "Career", "__v" : 0 }
推荐阅读
- c# - 在用数据库中的数据填充组合框时,我创建了 SqlDataReader。我希望检索带有产品名称的列
- python - 如何在 Python 3 中将过滤器对象的元素获取到列表中?
- jquery - 3D 翻转卡在 Iphone 上没有旋转
- javascript - 数据未定义
- android - 尝试创建正确布局的问题
- regex - 尝试使用 RegEx 在文件中查找特定字符串
- c# - 视图没有被模型更新
- docker - 使用 Dockerfile 将文件从容器复制到主机
- angularjs - 从指令调用 $http 在 angularjs watch 中
- r - addMarkers 需要 R Shiny 中的非 NULL 经度/纬度值