MongoError: doc 参数必须是一个对象

时间:2021-01-31 04:37:32

标签: node.js mongodb

我有这个 xml 数据要插入到 MongoDb 中。

<?xml version="1.0" encoding="UTF-8"?><PFA><Entity id="123" action="add" date="19-May-2020"></Entity><Entity id="124" action="add" date="29-Jul-2020"></Entity></PFA>

我要插入 mongodb 的 nodejs 代码如下:

const fs = require('fs');
const xml2js = require('xml2js');
const util = require('util');

const parser = new xml2js.Parser({
    mergeAttrs: true,
    explicitArray: false
});


fs.readFile('data.xml', (err, data) => {
    parser.parseString(data, (err, result) => {
 
        var jsonString = JSON.stringify(result);
        var jsonObj = JSON.parse(jsonString);

        var MongoClient = require('mongodb').MongoClient;
        var url = "mongodb://localhost:27017/";

        MongoClient.connect(url, function (err, db) {
            if (err) throw err;

            var dbo = db.db("abc");

            // Define which collection to perform insertion
            dbo.collection("entity").insertOne(jsonObj.PFA.Entity, function (err, res) {
                if (err) throw err;
                console.log("1 document inserted");
                db.close();
            });
        });
    });
});

但是当我运行它时,出现错误 MongoError: doc parameter must be an object

当我console.log(jsonObj.PFA.Entity);时,我得到以下信息:

 [   { id: '1227212', action: 'add', date: '19-May-2020' },   { id:
 '1227291', action: 'add', date: '29-Jul-2020' } ]

为什么即使在我拥有 JSON.parse 之后它也不是对象?然后我如何将它作为对象传递给 mongodb?我无法将整个 jsonObj 传递给 mongodb,因为如果这样做,我只会插入一个文档而不是两个。

1 个答案:

答案 0 :(得分:2)

 [   { id: '1227212', action: 'add', date: '19-May-2020' },   { id:
 '1227291', action: 'add', date: '29-Jul-2020' } ]

这是一个由两个对象组成的数组(用 JS 的说法)。

如果要在一次操作中插入多个文档,可以使用批量写入。 insertOne 需要单个文档/对象。