我正在尝试使用Node.js将一个对象数组发布到我的MongoDB。

huangapple go评论70阅读模式
英文:

I'm trying to post an array of obejcts into my mongodb using node.js

问题

我试图使用名为obj的虚拟数据将对象数组发布到我的MongoDB,但它只发布了一个空数组。

这是我的代码:

模式

const mongoose = require('mongoose');

const Schema = mongoose.Schema;
const LevelSchema = new Schema({
    item: [Object],
});

const Items = mongoose.model('items', LevelSchema);

module.exports = Items;

发布路由

const router = require('express').Router();
let Items = require('../models/items.modal');

router.route('/add').post((req, res) => {
  const obj = [
    {
      "name":"name1"
    },
    {
      "name":"name2"
    },
    {
      "name":"name3"
    }
  ];
  const newItems = new Items({item: obj});

  newItems.save()
    .then(() => res.json('User added!'))
    .catch(err => res.status(400).json('Error: ' + err));
});

module.exports = router;

但不知何故,当我运行它时,它只返回一个空数组。

发布的数据

{
    "_id": "90bacff0cc5c2e3734545f34",
    "item": [],
    "__v": 0
}
英文:

I'm trying to post an array of objects into my mongodb using my obj dummy data, but it just posts an empty array instead

Here's my code

Schema

const mongoose = require('mongoose');

const Schema = mongoose.Schema;
const LevelSchema = new Schema({
    item: [Object],
});

const Items = mongoose.model('items', LevelSchema);

module.exports = Items;

Post routes

const router = require('express').Router();
let Items = require('../models/items.modal');

router.route('/add').post((req, res) => {
  const obj = [
    {
      "name":"name1"
    },
    {
      "name":"name2"
    },
    {
      "name":"name3"
    }

  ]
  const newItems = new Items({obj});

  newItems.save()
    .then(() => res.json('User added!'))
    .catch(err => res.status(400).json('Error: ' + err));
});

module.exports = router;

But some how it just returns an empty array when I run it

Posted Data

   {
        "_id": "90bacff0cc5c2e3734545f34",
        "item": [],
        "__v": 0
    }

答案1

得分: 2

你的模式如下:

const LevelSchema = new Schema({
    item: [Object],
});

所以你需要插入类似这样的内容:

{
  item: [{}]
}

但你正在插入:

{
  obj: [{}]
}

所以使用 const newItems = new Items({item:obj}); 应该可以工作。

英文:

Your schema is like this:

const LevelSchema = new Schema({
    item: [Object],
});

So you have to insert something like:

{
  item: [{}]
}

But you are inserting:

{
  obj: [{}]
}

So using const newItems = new Items({item:obj}); should works.

huangapple
  • 本文由 发表于 2023年1月8日 22:26:04
  • 转载请务必保留本文链接:https://go.coder-hub.com/75048520.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定