我的代码一直存在问题。我正在使用mongoose连接mongoDB并存储文档。我正在尝试将日历事件存储到对象数组中。但是当我将数据发送到服务器时,它会显示以下错误:
{ [CastError: Cast to string failed for value "[object Object]" at path "agenda"]
message: 'Cast to string failed for value "[object Object]" at path "agenda"',
name: 'CastError',
kind: 'string',
value:
{ type: 'Sessão Plenária',
vereadores: [Object],
local: [Object],
desc: 'SS',
nome: 'Novo Evento',
data_horafim: '2016-04-20T07:00:00.000Z',
data_horainicio: '2016-04-19T19:00:00.000Z' },
path: 'agenda',
reason: undefined } }
如果我把它变成一个字符串它可以工作,但在我的模型中它不是一个字符串数组。
var camaraSchema = new mongoose.Schema({
obj_id_usuario: {
type: String,
default: ''
},
cidade: String,
estado: String,
endereco: {
lbl_logradouro: {
type: String,
default: ''
},
lbl_numero: {
type: String,
default: ''
},
lbl_complemento:{
type:String,
default:'',
},
lbl_bairro: {
type: String,
default: ''
},
lbl_cep: {
type: String,
default: ''
},
},
redesocial: {
siteoficial: {
type: String,
default: ''
},
twitter: {
type: String,
default: ''
},
facebook: {
type: String,
default: ''
},
email: {
type: String,
default: ''
}
},
agenda:[{
data_horainicio: Date,
data_horafim: Date,
nome:String,
desc:String,
local:{
logradouro: String,
numero: String,
complemento: String,
bairro: String,
cidade: String,
estado: String,
cep: String
},
vereadores:[String],
type: String
}],
mesaDiretora:{
vereadores:[{
vereador: String,
funcao: String,
}],
funcoes:[String]
},
setores:[{
nome: String,
telefone: String,
email: String
}],
sessao:[{
numero: String,
tipo: String,
datahora: Date,
arquivo: String,
}],
tipoSessao:[{
codigo: String,
desc: String,
}],
lideranca:[{
desc: String,
vereadores: [String],
lider: String
}],
noticias:[{
titulo: String,
assesor: String,
datahora: Date,
corpo: String,
imagem: String,
}],
imagens:[{
titulo: String,
foto: String
}],
contrato: {
obj_id_representante: {
type: String,
default: ''
},
int_contrato: {
type: String,
default: ''
},
int_empenho: {
type: String,
default: ''
},
lbl_licitacao: {
type: String,
default: ''
},
dt_inicio: Date,
lbl_periodo: {
type: String,
default: ''
},
ft_valor: {
type: Number,
default: 0
},
pc_representante: {
type: String,
default: ''
},
lbl_observacao: {
type: String,
default: ''
},
arq_contrato: {
type: String,
default: ''
},
},
telefone: {
type: String,
default: ''
},
bl_ativo: {
type: Boolean,
default: false
},
lbl_img: {
type: String,
default: 'default-user.png'
},
ts_data: {
type: Date,
default: Date.now
},
}
NodeJS代码
CamaraModel.findByIdAndUpdate({
_id: req.body._id
}, {
$push: {
'agenda': req.body.agenda
}
}, {
setDefaultsOnInsert: true
}, function(err, users) {
console.log(err);
res.json(users);
});
答案 0 :(得分:0)
我遇到了同样的问题,我认为这与您如何声明子文档(议程)有关。而不是将对象设置到议程数组(agenda: [{...}]
)中,而不是documentation:
var childSchema = new Schema({ name: 'string' });
var parentSchema = new Schema({
children: [childSchema]
})
所以在你的情况下:
var AgendaSchema = new mongoose.Schema({
data_horainicio: Date,
data_horafim: Date,
nome:String,
desc:String,
local:{
logradouro: String,
numero: String,
complemento: String,
bairro: String,
cidade: String,
estado: String,
cep: String
},
vereadores:[String],
type: String
});
var camaraSchema = new mongoose.Schema({
...,
agenda: [AgendaSchema],
...
});