3

当我想在我的mongodb中插入一个带有mongodb的文档时,它有一个子文档的数组元素,函数将它错误地插入到数据库中。我这样调用插入函数:

var OrderItem = [];
OrderItem[0] = {
                'model': asd1,
                'size' : M,
                'color' : Black
            };

OrderItem[1] = {
                'model': bsa2,
                'size' : S,
                'color' : Black
            };
var newOrdenCompra = {
            'fechaCompra' : d,
            'items' : OrderItem
        };
 $.ajax({
        type: 'POST',
        data: newOrdenCompra,
        url: '/order/addordercompra',
        dataType: 'JSON'
        }).done(function( response ) 
        {
            if (response.msg !== '') {
                alert('Error: ' + response.msg);
            }
        });

接着:

/*
 * POST to add orden de compra.
 */
router.post('/addordercompra', function(req, res) {
    var db = req.db;
    var collection = db.get('ordercompra');
    collection.insert(req.body, function(err, result){
        res.send(
            (err === null) ? { msg: '' } : { msg: err }
        );
    });
});

但是我进入 BD 的内容是这样的(我上面写的示例在项目子文档中的属性较少):

> db.ordercompra.find().pretty()
{
        "_id" : ObjectId("5601b2181430470c1266d415"),
        "fechaCompra" : "2015-09-22T16:54:59Z",
        "items[0][model]" : "CLUB DE LA PELEA",
        "items[0][size]" : "XXXS",
        "items[0][color]" : "CHOCOLATE",
        "items[0][sena]" : "1200",
        "items[0][precio]" : "2600",
        "items[0][ordOT]" : "2",
        "items[0][id]" : "55f9e402ebfcd9b414339f8f",
        "items[1][model]" : "302",
        "items[1][size]" : "M",
        "items[1][color]" : "NEGRO",
        "items[1][sena]" : "0",
        "items[1][precio]" : "2100",
        "items[1][ordOT]" : "",
        "items[1][id]" : "55e76c0d497c742019bbb5f3"
}
>

我可以做些什么来获取带有子文档数组的元素的结构?我做错了还是插入失败了?

谢谢您的帮助!对不起我的英语不好。尼古拉斯。

4

1 回答 1

2

我已经解决了发送使用 JSON.stringify 转换的数据的问题,并将 ajax 参数更改为 dataType:'text' 并添加 contentType:'application/json'。这样做插入效果很好。谢谢您的帮助!示例图片:

客户代码

服务器代码

BD 看起来像这样:

数据

于 2015-09-23T15:31:01.117 回答