Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose:向数组中添加元素_Javascript_Arrays_Node.js_Mongoose_Nodes - Fatal编程技术网

Javascript Mongoose:向数组中添加元素

Javascript Mongoose:向数组中添加元素,javascript,arrays,node.js,mongoose,nodes,Javascript,Arrays,Node.js,Mongoose,Nodes,我正在使用创建一个网站 我正在尝试向管理站点的accounts部分添加dashboard元素。dashboard元素用于存储用户有权访问的仪表板(字符串)数组 我成功地将“仪表盘”添加到模式中并在其中存储数据 问题是: 我需要能够向数组中添加元素。当前代码的显示方式将替换数据库中仪表板的内容 我知道我可以使用$addToSet,但我不确定该怎么做,因为fieldsToSet变量作为单个对象发送到findbyidandaddupdate()方法 下面是我的代码片段: workflow.on('pa

我正在使用创建一个网站

我正在尝试向管理站点的accounts部分添加dashboard元素。dashboard元素用于存储用户有权访问的仪表板(字符串)数组

我成功地将“仪表盘”添加到模式中并在其中存储数据

问题是: 我需要能够向数组中添加元素。当前代码的显示方式将替换数据库中仪表板的内容

我知道我可以使用
$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
}