我的MongoDB中的数组没有按照我希望的方式进行结构化。我正在使用node.js,Express和Mongoose。
这是我的架构:
var fruitSchema = new schema ({
fruitName: {type: String},
priceArray: {type: Array}
});
以下是推送新priceArray项目的代码的一部分:
Fruit.findOneAndUpdate({fruitName: req.body.fruitName},
{
$push: {
priceArray: {
price: req.body.price,
description: req.body.description
}
}
}
以下是表格:
<form method="POST" action="/fruit">
<div class='form-group'>
<label for="fruitName">Fruit Name</label>
<input type="text" name="fruitName" id="fruitName"/>
</div>
<div>
<label for="price0">Price</label>
<input type="text" name="price[0]" id="price0"/>
<label for="description0">Description</label>
<input type="text" name="description[0]" id="description0"/>
</div>
<div>
<label for="price1">Price</label>
<input type="text" name="price[1]" id="price1"/>
<label for="description1">Description</label>
<input type="text" name="description[1]" id="description1"/>
</div>
<input type="submit" value="submit">
</form>
那么这一切是什么意思?基本上,用户可以输入水果的名称,然后他们将输入水果的价格,并提供描述。因此&#39; 和&#39; 部分始终在一起。表单允许多个价格/描述对的输入(此处发布的示例表单允许2对,但真实表单允许无限对)。
在我的MongoDB中,这就是上面的代码如何插入表单数据:
{
"fruitName" : "test fruit",
"priceArray" : [
{
"price" : [
"$2.00",
"$3.00"
],
"description" : [
"Good",
"Bad"
]
}
以下是我想要的样子:
{
"fruitName" : "test fruit",
"priceArray" : [
{
"price" : "$2.00"
"description: "Good"
}
{
"price" : "$3.00"
"description" : "Bad"
}
]
}
我该如何解决这个问题?
答案 0 :(得分:0)
A)见:
http://mongoosejs.com/docs/subdocs.html
&安培;将架构声明为:
var fruitSchema = new schema ({
fruitName: {type: String},
priceArray: [{
price: String,
description: String
}]
});
B) 在日志中查看您的req.body。你必须处理req.body.price&amp;描述 因为它们是独立的数组。因此,您需要相应地更改findOne&amp;更新。