【问题标题】:How update the first element of an array in mongoDB?如何更新 mongoDB 中数组的第一个元素?
【发布时间】:2015-06-17 09:10:50
【问题描述】:

我正在学习 NodeJs 和 MongoDb,我将创建一个相册。 我遇到了 mongoDB 的问题。

其实,上传一张图片后,我是这样将新图片推送到数据库中的:

AlbumPicture.update({album:'album1'}, {$push: {pictures:file_name}}, function(err, data){
  if(err){
    console.log(err);
  }

  console.log('Database Updated');
});

问题是:“行”:图片是一个数组(),所以当我推送新数据时,这个数组的第一个元素(id:[0])没有设置。

例子:

{
  picture:
    [
      "", // Not Set ??
      "1.jpg",
      "2.jpg"
    ]
}

如何更新这个数组的第一个元素,然后再推送其他数据?

我用这部分代码进行了测试,但它似乎不起作用,而且不美观。

AlbumPicture.find({album:'album1'}).exec(function(err, data){

  if(err){
    console.log(err);
  }

  if(data[0].pictures[0] == '')
  {
    AlbumPicture.update({album:'album1'}, {$set: {'pictures[0]':file_name}}, function(err, data){
      if(err){
        console.log(err);
      }

      console.log('Database Updated @ 0');
    });
  }
  else
  {
    AlbumPicture.update({album:'album1'}, {$push: {pictures:file_name}}, function(err, data){
      if(err){
        console.log(err);
      }

      console.log('Database Updated');
    });
  }
});

更新:我这样创建我的收藏:

var albumData = {
  album : 'album1',
  pictures : ''
};

var AlbumPicture = new AlbumPicture(albumData);

AlbumPicture.save(function(error, data){
 if(error){
  console.log(error);
 }
 else
 {
  console.log('Album Created');
  res.json('created');
 }
});

【问题讨论】:

  • 当您使用具有 [0] ="" 的图片数组创建 AlbumPicture 时,它​​看起来像。您是如何创建 AlbumPicture 的?
  • @DominicScanlan 像这样:var albumData = { album : 'album1', pictures : '' }; var AlbumPicture = new AlbumPicture(albumData); AlbumPicture.save(function(error, data){ if(error){ console.log(error); } else { console.log('Album Created'); res.json('created'); } });

标签: node.js mongodb mongoose


【解决方案1】:

如果将图片设置为空数组,则索引 0 处不应有值。

var albumData = { album : 'album1', pictures : [] };

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2013-09-07
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多