我正在学习NodeJs和MongoDb,我将创建一个相册。 我遇到了mongoDB的问题。
事实上,在上传图片后,我将新图片推送到数据库中,如下所示:
AlbumPicture.update({album:'album1'}, {$push: {pictures:file_name}}, function(err, data){
if(err){
console.log(err);
}
console.log('Database Updated');
});
问题是:'行' :pictures是一个数组()所以当我推送新数据时,这个数组的第一个元素(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 :(得分:0)
如果您将图片设置为空数组,则不应该在索引0处具有值。
var albumData = { album : 'album1', pictures : [] };