使用Mongoose的过程中save操作出现的问题
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类型应该怎么进行数据的更新