我正在使用node.js和mongoose编写代码,我遇到了发布材料的问题,材料是我的实体。
以下是架构:
new Schema({
title: {
type: String,
trim: true,
set: util.ucfirst,
required: true
},
description: {
type: String,
required: true,
trim: true
},
downloads:{
type: Array,
default: [],
required: true
},
course_id: {
type: String,
required: false
},
_status: {
required: false,
default: true,
type: Boolean,
select: false
},
created_by:{
type: String
},
created_at:{
type: Date,
default: Date.now
},
modified_by:{
type: String
},
modified_at:{
type: Date,
default: Date.now
}
},
{
collection: collection,
versionKey: true,
strict: true
})
现在使用这些数据我发布的样本数据接受2个“字符串”和1个或多个“文件”数据。
以下是后api电话:
exports.post('/', function(req,res,next){
var _error = req.mydata.get('error');
if( !_error ){
var _object = req.mydata.get('data') || {},
_files = req.mydata.get('files');
_object.downloads = (_files && Array.isArray(_files['upload'])) ? _files['upload'] : (_files && typeof _files['upload'] == "object") ? [_files['upload']] : [];
model.insert(_module, _object, function(err, entry){
if( !err && entry ){
res.status(200).json(entry);
res.end();
}else{
next();
}
});
}else{
next(_error);
}
});
但我收到的是以下输出,这是不期望的。
答案 0 :(得分:3)
我遇到了同样的问题。您无法将versionKey
设置为true
,Mongoose认为它是版本密钥的新名称 - 应该是字符串。只需省略versionKey
参数,您就可以了。
我已经为此开了一个问题:https://github.com/Automattic/mongoose/issues/3747