节点.js / 猫鼬 - 从子集合中添加、更新和删除项目
Node.js / Mongoose - Adding, Updating and Deleting items from sub collection
我在基于节点的Web应用程序中使用猫鼬具有以下架构。
var headerSchema = new mongoose.Schema({
name: String,
values: String,
state: String
});
var responseSchema = new mongoose.Schema({
name: String,
responseText: String,
active: String
});
var requestSchema = mongoose.Schema({
id: String,
name: String,
description: { type: String },
url: String,
verb: String,
createdAt: { type: Date, default: Date.now },
headers: [headerSchema],
body: String,
responses: [responseSchema]
});
请求模式是作为集合存储在 mongo 数据库中的模式,标头模式和响应模式是它的子集合。
我面临的问题是了解如何在更新请求架构文档时,从其中一个子集合(例如 responseSchema)中添加、更新和删除项目的最佳方法是什么。
我对mongo相当陌生,一直无法找到如何最好地实现这一目标的明确例子。
提前非常感谢
首先,我将假设您已经使用如下内容构建了一个模型:
var request = mongoose.model( 'request', requestSchema );
当您的模型可用时,Mongoose 提供了一些用于处理子文档的帮助程序方法。首先,请注意,当您创建子文档时,Mongoose 会自动为其分配一个唯一的_id
标识符。您需要知道这是什么才能更新或删除给定的子文档。
下面的快速示例概述了主要方法。这假设您知道:
-
requestID
- 请求的唯一_id
-
headerID
- 页眉子文档的唯一_id
request.findById( requestID,
function (err, request) {
if(!err){
// 1: Add a new header
request.headers.push({
name: "My header name"
});
// 2: Modify a specific header
var thisHeader = request.headers.id(headerID);
request.headers.nam = "My header name";
// 3: Delete a specific header
var thisHeader = request.headers.remove(headerID);
request.save(function (err, request){
if(!err){
console.log('request saved: ' + request);
}
});
}
}
);
相关文章:
- 添加文字和评论功能更新Div
- 通过jQuery添加ng样式属性,angular不更新
- 更新数据,而不是用javascript和jquery将其添加到我的表中
- JSON:loop Invoice Items:如果InvoiceNo未退出则添加,如果退出则更新值,示例包括在内
- 如何使用jQuery来添加分段的表单字段,并在添加不同值时进行更新
- 如何在猫鼬中更新文档后添加一些操作
- 如何在jQuery中的单个保存按钮上更新数据和添加数据
- 通过Couchdb中的更新处理程序添加id和author字段
- 如何在使用setInterval()更新的值中添加逗号
- 如何更新浏览器'使用Ajax将html添加到页面后的缓存
- 向HTML页面添加按钮,更新表格信息
- 在媒体窗口中选择图片后添加/更新自定义字段(WordPress)
- 异步添加/更新保存方法未更新
- 连续添加|更新|将数据库中的数据刷新到页面而不回发
- jQuery-ajax在每个/任何ajax请求的数据中添加更新的变量
- 在map中嵌套的列表中添加/更新一个值
- geoJson属性添加/更新
- Angular从用户输入的属性和值中添加/更新json对象
- 使用jquery在URL中添加/更新参数
- D3.js没有在HTML中添加更新的树