使用猫鼬将从JSON接收的多个记录插入到集合中

时间:2018-11-11 00:17:38

标签: node.js json database mongodb mongoose

我有一个很大的JSON数组,里面有很多对象。我想插入此JSON,并为数组中的每个对象在DB中创建一个内部对象。我是MongoDB和Mongoose的新手,所以我不确定这种方法。在某些地方,我已经阅读了我需要使用insert,在某些地方,我已经阅读了我需要使用insertMany,在一些地方我已经看到了create。目前没有任何效果。我正在尝试这样做(获取数据是从远程api获取JSON的私有函数):

const mongoose = require("mongoose");
require("../../models/NFTContract");
const Contract = 
mongoose.model("contracts");

let data= getData();
module.exports = app => {
app.get("/test", (req, res, next) => {
    Contract.create(contracts, (err, docs) => {
      if (err) {
        console.log("err");
      } else {
        console.log("All should be inserted");
  }
});

});

谢谢

1 个答案:

答案 0 :(得分:0)

阅读these docs,了解有关insertMany的工作方式的一些解释。这是文档中的示例:

var arr = [{ name: 'Star Wars' }, { name: 'The Empire Strikes Back' }];
Movies.insertMany(arr, function(error, docs) {});

如果您有JSON,则要先解析它。假设您有此JSON(source):

{"menu": {
    "header": "SVG Viewer",
    "items": [
        {"id": "Open"},
        {"id": "OpenNew", "label": "Open New"},
        null,
        {"id": "ZoomIn", "label": "Zoom In"},
        {"id": "ZoomOut", "label": "Zoom Out"},
        {"id": "OriginalView", "label": "Original View"},
        null
    ]
}}

如果要插入项目,请执行以下操作:

Items.insertMany(JSON.parse(myJson).menu.items, (error, docs) =>
  error ? console.error(error) : console.log(docs))