Javascript Mongoose:向数组中添加元素
我正在使用创建一个网站 我正在尝试向管理站点的accounts部分添加dashboard元素。dashboard元素用于存储用户有权访问的仪表板(字符串)数组 我成功地将“仪表盘”添加到模式中并在其中存储数据 问题是: 我需要能够向数组中添加元素。当前代码的显示方式将替换数据库中仪表板的内容 我知道我可以使用Javascript Mongoose:向数组中添加元素,javascript,arrays,node.js,mongoose,nodes,Javascript,Arrays,Node.js,Mongoose,Nodes,我正在使用创建一个网站 我正在尝试向管理站点的accounts部分添加dashboard元素。dashboard元素用于存储用户有权访问的仪表板(字符串)数组 我成功地将“仪表盘”添加到模式中并在其中存储数据 问题是: 我需要能够向数组中添加元素。当前代码的显示方式将替换数据库中仪表板的内容 我知道我可以使用$addToSet,但我不确定该怎么做,因为fieldsToSet变量作为单个对象发送到findbyidandaddupdate()方法 下面是我的代码片段: workflow.on('pa
$addToSet
,但我不确定该怎么做,因为fieldsToSet变量作为单个对象发送到findbyidandaddupdate()
方法
下面是我的代码片段:
workflow.on('patchAccount', function() {
var fieldsToSet = {
name: {
first: req.body.first,
middle: req.body.middle,
last: req.body.last,
full: req.body.first +' '+ req.body.last
},
company: req.body.company,
phone: req.body.phone,
zip: req.body.zip,
search: [
req.body.dashboards,
req.body.first,
req.body.middle,
req.body.last,
req.body.company,
req.body.phone,
req.body.zip,
]
};
req.app.db.models.Account.findByIdAndUpdate(req.params.id, fieldsToSet, function(err, account) {
if (err) {
return workflow.emit('exception', err);
}
workflow.outcome.account = account;
return workflow.emit('response');
});
});
这里有一个到原文的链接:(第184-203行)
谢谢
fieldsToSet
是一个坏名字(至少在这种情况下会产生误导),参数实际上是update
,它可以采取$addToSet之类的$action
我认为您不希望(仅)使用仪表板设置搜索字段。我猜该字段用于索引用户进行搜索。所以你可能会做这样的事情:
fieldsToSet = {
....all the regular stuff,
$addToSet: {dashboard: req.body.dashboardToAdd}
//I'm not sure that you can add multiple values at once
}
由于这是每次设置所有值,我不确定您是否真的要添加单个仪表板项。相反,您可能希望获得用户拥有的全套仪表板,并再次设置整个阵列(如果他们删除了一个怎么办?)
非常感谢。这实际上是一个非常愚蠢的问题;添加仪表板时,我忘记了服务器端脚本中的逗号。。。。
fieldsToSet = {
....all the regular stuff,
dashboards: req.body.dashboards
//In this case you'd want to make sure dashboards is an appropriate array
}