【问题标题】:Trying to save data to a collection with mongoDB, nodejs and mongoose尝试使用 mongoDB、nodejs 和 mongoose 将数据保存到集合中
【发布时间】:2020-01-19 22:58:30
【问题描述】:

我似乎不知道如何使用 mongoDB、mongoose 和 nodejs 将文档保存到集合中。我正在尝试将从 API 返回的一些数据保存到我在 mongodb atlas 中创建的集合中,但我终生无法弄清楚如何做到这一点。

我尝试使用 mongoose 创建一个架构,并尝试通过该架构进行保存并尝试直接连接到数据库,但我所做的一切似乎都不起作用。

这是我的架构

const mongoose = require('mongoose');

const twitterStateDataSchema = mongoose.Schema({
  stateName: Number
});

module.exports = mongoose.model('TwitterStateData', twitterStateDataSchema);

这是我对 Schema 的调用:

TwitterStateData.insertOne(statesMap).then(test => {
  console.log(test);
})

这是我与数据库的连接:

mongoose.connect(process.env.MONGO_DB)
.then(() => {
  console.log('Connected to Sport Stakehouse database!')
})
.catch(() => {
  console.log('Connection Failed!')
})

这是我的 env.json 中减去秘密内容的内容:

.mongodb.net/gameData?retryWrites=true&w=majority

我正在尝试发送这个对象:

{ IA: 4, undefined: 7, MI: 1, FL: 1, WV: 1, TX: 1, MN: 1, MO: 1 }

我收到错误 insertOne() is not a function 但我认为这不是我的问题。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    根据Mongoose docs,您可以使用.create.save.save()是来自Model实例的方法,.create()作为方法调用直接从Model中调用,根据需要使用。

    使用创建:

    const data = { IA: 4, undefined: 7, MI: 1, FL: 1, WV: 1, TX: 1, MN: 1, MO: 1 };
    TwitterStateData.create(data, function (err, small) {
        if (err) return handleError(err);
        // saved!
    });
    

    使用保存:

    const object = new TwitterStateData(yourData);
    object.save(function (err) {
      if (err) return handleError(err);
      // saved!
    });
    

    注意:您需要打开连接才能使功能正常工作。

    【讨论】:

    • 这似乎添加了一个名为 twitterstatedatas 的新集合,不确定这里发生了什么。它不会向集合中添加任何数据,只会向集合本身添加任何数据。
    • 所以它实际上是添加到正确的集合中,但出于某种原因还创建了另一个名为 twitterstatedatas 的集合。
    • 如果您使用.create 将创建另一个集合。如果您有集合的实例,请使用 .save 方法。
    猜你喜欢
    • 1970-01-01
    • 2020-09-01
    • 2019-11-03
    • 1970-01-01
    • 2018-11-27
    • 2020-10-22
    • 2017-07-27
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多