Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用mongoose架构向已声明的MongoDB对象添加值_Node.js_Json_Mongodb_Mongoose_Database Design - Fatal编程技术网

Node.js 使用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

我对猫鼬和猫鼬是个新手。我正在尝试创建一个节点&MongoDB拍卖应用程序。因此,由于它实际上是一个在线拍卖,用户应该能够出价的项目。我成功地完成了用户注册、登录页面和身份验证过程,但是,我有点陷入了竞价页面

我使用mongoose创建了一个模式,每个拍卖项目都保存在数据库中。我想在MongoDB的同一个对象中添加每个投标项目的用户的姓名和价格,如下所示:

{
    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
}]
这里的缺点是查询和访问它需要更复杂的查询

您可以阅读更多有关注意事项的信息 在这里: