Node.js 使用mongoose架构向已声明的MongoDB对象添加值
我对猫鼬和猫鼬是个新手。我正在尝试创建一个节点&MongoDB拍卖应用程序。因此,由于它实际上是一个在线拍卖,用户应该能够出价的项目。我成功地完成了用户注册、登录页面和身份验证过程,但是,我有点陷入了竞价页面 我使用mongoose创建了一个模式,每个拍卖项目都保存在数据库中。我想在MongoDB的同一个对象中添加每个投标项目的用户的姓名和价格,如下所示:Node.js 使用mongoose架构向已声明的MongoDB对象添加值,node.js,json,mongodb,mongoose,database-design,Node.js,Json,Mongodb,Mongoose,Database Design,我对猫鼬和猫鼬是个新手。我正在尝试创建一个节点&MongoDB拍卖应用程序。因此,由于它实际上是一个在线拍卖,用户应该能够出价的项目。我成功地完成了用户注册、登录页面和身份验证过程,但是,我有点陷入了竞价页面 我使用mongoose创建了一个模式,每个拍卖项目都保存在数据库中。我想在MongoDB的同一个对象中添加每个投标项目的用户的姓名和价格,如下所示: { name: "valuable vase from 1700s", owner: "Joh
{
name: "valuable vase from 1700s",
owner: "John Doe",
itemId: 100029,
bids: {
100032: 30000,
100084: 34000
}
}
因此,每个用户都有id,如100032:30000
,当他们出价时,他们的“帐户id:price”将添加到项目数据库对象的bids
下
我做了一些研究,找到了一些解决问题的方法,但我想知道我想做的事情是否可行,是否是正确的解决方案
谢谢你给我时间 您决定实现功能的方式有点复杂 这样做并非不可能,但更好的方法是使用对象数组,而不是像这样使用单个对象:
{
name: "valuable vase from 1700s",
owner: "John Doe",
itemId: 100029,
bids: {
100032: 30000,
100084: 34000
}
}
{
名称:“”,
..
..
投标:[{
用户:100032,
价格:30000
}, {
用户:100084,
售价:34000
}]
}
确实有两种方法可以实现您的目标
在我看来,一个名为ItemBids的集合,其中每个文档都包含此数据结构,将为您带来最大的好处
{
itemId: ObjectId # reference to the item document
accountId: ObjectId # reference to the account
bid: Number # the bid value
}
此模式适合您的情况,因为您可以根据需要轻松查询出价-
您可以获得所有帐户出价,您可以获得所有项目出价,并且您可以按照出价价格与本地Mongo进行排序
每次有人出价时,您都会在此集合中插入一个新文档
另一个选项是在item对象中嵌入Bids对象数组。
每个投标对象应包括:
bids: [{
account: ObjectId("") # This is the account
price: Number
}]
这里的缺点是查询和访问它需要更复杂的查询
您可以阅读更多有关注意事项的信息
在这里: