【发布时间】: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'); } });