NodeJS如何更新内部元素
Node JS how to update inner-inner elements
我正在使用mongo和nodejs,并试图将response
对象添加到question
对象中
这是我正在使用的模型的一部分:
questions: [
{
name: String,
responses: [
{
username: String,
reply: String
}
]
}
]
我正试图"推送"对responses
的响应,就像这样:
for(var i = 0; i < req.body.response.length && i < survey.questions.length; i++) {
var response = req.body.response[i];
if(response.trim() == "") continue;
// survey.questions[i].responses.push({
var responseIndex = "questions[" + i + "].responses";
Survey.findByIdAndUpdate(survey._id, {
"$addToSet" : { responseIndex : {
username: (req.user ? req.user.username : null),
reply: response
} }
}, function(error, survey) {
if(error) {
console.log(error);
}
console.log(survey);
});
}
然而,问题是它创建了一个没有数据的新问题对象。任何见解都将不胜感激!
编辑:这是整个调查模型
/// <reference path="../../typings/tsd.d.ts" />
var mongoose = require("mongoose");
var schema = new mongoose.Schema({
surveyName: String,
creator: String,
created: {
type: Date,
default: Date.now
},
questions: [
{
name: String,
responses: [
{
username: String,
reply: String
}
]
}
]
});
module.exports = mongoose.model('Survey', schema);
// exports.Survey = mongoose.model('Survey', schema);
当您需要在数组中添加对象时,您应该使用$push函数,因为您的question
模型中有一个子文档。在你的情况下,内在的,也许你可以这样做:
Survey.findById(survey._id, function(error, res) {
for(var i = 0; i < req.body.response.length && i < survey.questions.length; i++) {
var response = req.body.response[i];
if(response.trim() == "") continue;
(res.questions[i]).responses.push(response);
}
res.save(function(error, res) {
// survey updated with responses.
}
}
让我知道这是否有效。
相关文章:
- 如何选择一个类而不是其内部元素
- angularJS获取指令的内部元素
- NodeJS如何更新内部元素
- jQuery点击事件处理类元素和内部元素
- 如果释放鼠标时内部元素未悬停,则防止触发“单击”的正确方法
- 如何使内部元素具有位置:绝对覆盖溢出:隐藏外部元素
- 如何使用jquery从父元素中删除文本(不删除内部元素)
- 强制内部元素溢出-x
- jquery选择器-不选择内部元素
- onmouseover在内部元素上执行
- 设置内部元素的样式
- 角度砌体指令隐藏内部元素,错误:引用错误:未定义砌体
- 窗体内部元素的 addEventListener
- 如何获得带有内部元素填充的完整车身宽度
- 单击对内部元素执行某些操作
- 使用嵌入隐藏内部元素的父范围的指令范围
- 使用 JavaScript 从 XML 文件中获取内部元素
- 根据其内部元素动态更改 CSS
- 指令的动态模板,包装器和内部元素的不同解析行为
- ExtJS门户布局问题(内部元素的自动高度/宽度)