我正在定义一个猫鼬模式,定义如下:
inventoryDetails: {
type: Object,
required: true
},
isActive:{
type:Boolean,
default:false
}
我尝试了“对象”类型,我看到我的数据已成功保存。当我将类型更改为数组时,保存失败。
示例数据:
{
"inventoryDetails" : {
"config" : {
"count" : {
"static" : { "value" : "123" },
"dataSource" : "STATIC"
},
"title" : {
"static" : { "value" : "tik" },
"dataSource" : "STATIC"
}
},
"type" : "s-card-with-title-count"
}
}
“对象”类型不是mongoose允许的类型之一。但是,它是如何得到支持的?
来自mongoose文档:https://mongose js . com/docs/schematypes . html # what-is-a-schematype
...//any:Schema。类型.混合//...
混合是一种“任何事情都可以”的模式类型。以下是等效的。
const Any = new Schema({ any: {} });
const Any = new Schema({ any: Object });
const Any = new Schema({ any: Schema.Types.Mixed });
const Any = new Schema({ any: mongoose.Mixed });
所以,我认为这就是设置type:Object有效的原因。
猫鼬5
“一切顺利”模式类型。Mongoose不会对混合路径进行任何转换。您可以使用Schema.Types.Mixed或通过传递空对象文字来定义混合路径。以下是等效的。
const Any = new Schema({ any: {} });
const Any = new Schema({ any: Object });
const Any = new Schema({ any: Schema.Types.Mixed });
const Any = new Schema({ any: mongoose.Mixed });
对于您当前的模式,您可以使用下一个示例:
import mongoose from 'mongoose'
const inventorySchema = mongoose.Schema({
inventoryDetails: {
type: mongoose.SchemaTypes.Mixed,
required: true
},
isActive:{
type: Boolean,
default:false
}
})
const inventory = await inventorySchema.create({
inventoryDetails: {
config: {
count: {
static: { value: '123' },
dataSource: 'STATIC'
},
title: {
static: { value: 'tik' },
dataSource: 'STATIC'
}
},
type: 's-card-with-title-count'
}
})
console.log(inventory)
有两个选项可以在数据库中获取<code>对象:
let YourSchema = new Schema({
inventoryDetails: {
config: {
count: {
static: {
value: {
type: Number,
default: 0
},
dataSource: {
type: String
}
}
}
},
myType: {
type: String
}
},
title: {
static: {
value: {
type: Number,
default: 0
},
dataSource: {
type: String
}
}
}
})
看看我的真实代码:
let UserSchema = new Schema({
//...
statuses: {
online: {
type: Boolean,
default: true
},
verified: {
type: Boolean,
default: false
},
banned: {
type: Boolean,
default: false
}
},
//...
})
此选项使您能够定义对象的数据结构。
如果需要灵活的对象数据结构,请参阅下一个。
取自文档的示例:
let YourSchema = new Schema({
inventoryDetails: Schema.Types.Mixed
})
let yourSchema = new YourSchema;
yourSchema.inventoryDetails = { any: { thing: 'you want' } }
yourSchema.save()
是我的第一个问题。我的问题是我想从对象Customer中的Contacts:{type:[contactSchema]数组中获取一个带有_id的对象contact,但我得到的是hole对象Customer。 如果我使用contact.findone我会得到空。
我一直在研究猫鼬文档,但我找不到一种方法来实现我想要做的事情。考虑一个MangGDB用户集合。还可以考虑一个包含DB集合中所有字段的蒙古人用户模式。 现在,我想登录到控制台,所有用户,但属性已更改。有点像: 用户。图例(): 给定的异步类型。find()函数我不确定这是否可以实现。我来自C#和PHP背景,只处理关系数据库,这可以通过在用户类中使用只返回所需值的函数轻松实现。 能做到吗?!
我是mongoDB新手,在使用Mongoose从mongoDB中的数组中删除团队对象时遇到困难。我的用户收藏看起来像; 我的移除路线看起来像; 控制台在用户之前和之后记录日志。更新是完全相同的,我没有得到任何错误抛出。控制台的输出。日志(错误、数据)最终被删除 我不知道该怎么解释。我也尝试过不按这里的建议传入userID;https://stackoverflow.com/a/24289161/5
我有一个收藏,存储一些产品的文档。在文档中,有一个数组来存储用户对产品的价格评估对象。 下面是一个用户对象的示例: app.js
我是MongoDB的新手,我正在用Mongoose创建一个简单的数据库,模型如下:用户、游戏和玩家。 因此,一个用户不包含或包含多个游戏。每个游戏都有一个玩家,每个玩家都指一个用户。如下所示(为了清晰起见,我简化了模式): 因此,现在在前端,我想向后端发送一份请愿书,为用户Joe(_id:11111)和Bob(_id:22222)创建一个新游戏,因此我向/api/games发送了一篇帖子,帖子的主
让我们考虑一下这些帖子的集合。每个帖子都有一个评论数组,每个评论都有一个字符串数组,带有键“likes”,表示喜欢该评论的用户。 如何使用mongoose检查用户是否喜欢具有给定ID的评论?