使用Mongoose的过程中save操作出现的问题
发布于 7 年前 作者 WOOOFEI 3135 次浏览 来自 问答
router.post('/uploadBg',function (req, res, next) {
    var upload=multer({
        storage:multer.diskStorage({
            destination:function (req, file, cb) {
                cb(null,'./public/images/indexBgs')
            },
            filename:function (req, file, cb) {
                cb(null,file.originalname)
            }
        })
    }).single('file');
    upload(req,res,function (err) {
        Config.find({name:"index_background"},function (err, result) {
            var bgList=result[0].config;
            bgList.push('/images/indexBgs/'+req.file.originalname);
            result[0].config=bgList;
            result[0].save(function (err) {
                if(err){
                    console.log(err);
                }
            });
        });
    });
    res.send('upload success');
});

Config是一个用来存放若干配置信息的模型。定义如下

var mongoose=require('mongoose');
var db=require('./db.js');

var ConfigSchema=new mongoose.Schema({
    name:{type:String},
    config:{type:mongoose.Schema.Types.Mixed}
});

var ConfigModel=db.model('Config',ConfigSchema);
module.exports=ConfigModel;

result[0].config是一个存放图片地址的数组。

我save操作没有存储成功但也没报任何错,求大神解答。

PS:有一个奇怪的现象就是如果我自己定义一个数组赋值给result[0].config然后save操作是可以存进去的,同样是数组的bgList就不行。如下:

			var arr=['sdasda','asdasda'];
            result[0].config=arr;
            result[0].save(function (err) {
                if(err){
                    console.log(err);
                }
            });
1 回复

应该是mixed类型出的问题,我加了

result[0].markModified('anything');

还是没用。

但是我将类型改成Array就没问题了 还是不知道mixed类型应该怎么进行数据的更新

回到顶部