我正在尝试保存对象数组,但它只是保存了ObjectIds而不是整个对象,甚至在架构中认为没有参考或类似的东西。
所以,我有这个架构:
let MatchPlayerSchema = new Schema({
deck: {type: Array, default: []}
});
我正在尝试从数据库中保存这个数组( playerDeck ):
[ { _id: 5a1fc7ee667b103aace5f3ec,
magicResist: 10,
armor: 10,
attack: 10,
health: 10,
name: 'Test',
__v: 0,
type: 'CardUnit' },
{ _id: 5a1fc7ee667b103aace5f3ec,
magicResist: 10,
armor: 10,
attack: 10,
health: 10,
name: 'Test',
__v: 0,
type: 'CardUnit' }]
像这样:
let player = new MatchPlayer();
player.deck = playerDeck;
player.save();
然而,结果是:
"deck" : [
ObjectId("5a1fc7ee667b103aace5f3ec"),
ObjectId("5a1fc7ee667b103aace5f3ec")
]
我试图将套牌设置为:[Schema.Types.Mixed]
,但它也没有帮助。
当我尝试保存类似于['test', 'test']
的内容时,它会保存正常。
我无法弄明白,我做错了什么 有任何想法吗?谢谢
答案 0 :(得分:0)
let MatchPlayerSchema = new Schema({
deck: {
type: Schema.Types.Mixed
}
});
您应该能够将一系列对象存储到'deck'
中答案 1 :(得分:0)
我遇到了同样的问题,并设置了
mongoose.set('debug', true);
帮助我查看猫鼬实际上发送给数据库的信息。
我曾经在模式中
const ChatSchema = mongoose.Schema({
messages: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Message',
}],
isRemoved: {
type: Boolean,
default: false,
required: true
}
});
将类型切换为mongoose.Schema.Types.Mixed
后,它可以正常工作。这就是我调用更新的方式
Chat.findOneAndUpdate({ _id: req.params.chatId }, { $push: { messages: message }},{new: true});