【问题标题】:Mongodb does not save a documentMongodb 不保存文档
【发布时间】:2020-01-28 23:23:11
【问题描述】:

我正在尝试存储 HTML 公式中的一些数据。我使用 HTTP POST 方法发送数据,并使用 Node.js 中的 Express 框架接收它们。数据到达并且它似乎可以工作,但是当我尝试使用 Mongoose 将它们存储到 MongoDB 中时,创建了数据库,但是当我执行 DB.sis_dictionary.find() 时没有存储数据

我尝试过构建不同类型的架构和模型,但似乎都不起作用。而且我从 Node.js 中没有收到任何错误,它似乎正在工作,但 MongoDB 数据库不存储任何内容。

const Mongoose = require('mongoose');
Mongoose.connect('mongodb://localhost:27017/sis_dictionary', {useNewUrlParser: true});
const Schema = Mongoose.Schema;
const wordSchema = new Schema({
  word: String
})
const Word = Mongoose.model('Word', wordSchema);

app.post('/saveWord', (req, res) => {
    var word = new Word({word: String(req.body)});
    word.save(function(err){
      if(err) {
        return console.error(err);
      } else {
        console.log("STATUS: WORKING");
      }
    })
    console.log(req.body);
})

server.listen(3000);

console.log("SERVER STARTUP SUCCESS");

在控制台中,我收到消息:“STATUS: WORKING”。

【问题讨论】:

  • req.body 里有什么?

标签: javascript html node.js mongodb


【解决方案1】:

sis_ditionary 是您的数据库名称,Words 应该是您的集合名称。如果从模式创建时未指定模型名称,猫鼬会自动为模型集合创建复数名称

db.collection.find() 是使用 mongo-shell 时查找集合数据的命令。运行以下命令获取数据:

  • use sis_dictionary

  • db.Words.find()

    使用漂亮的方法来美化结果

    db.Words.find().pretty()

第一个命令将选择 DB 和第二个命令列表收集数据。

因此,当您执行 db.sis_dictionary.find() 时,它将不起作用,因为 sis_dictinary 是您的数据库名称。

Nodejs 方式与 'mongoose'

//Model.find({});
  Word.find({});

另外,请检查此行var word = new Word({word: String(req.body)}); req.body 有什么?如果 req.body 是 {word:"example word"} 则直接将 req.body 传递给模态构造函数,即 new Word(req.body);

【讨论】:

    【解决方案2】:

    根据你的数据库 URL,mongodb://localhost:27017/sis_dictionarysis_dictionary 是数据库名称。

    根据您的mongoose 模型,Word 是您的集合名称。

    当您保存文档时,它会保存在一个集合下。所以你必须在集合下进行查询。

    所以当你尝试使用DB.sis_dictionary.find() 获取数据时,肯定是行不通的。

    您的查询应该类似于db.collection.find()

    使用以下查询,

    use sis_dictionary
    db.words.find()
    // for better view
    db.words.find().pretty()
    

    更多信息请查看documentation

    【讨论】:

      【解决方案3】:

      谢谢大家。你没问题,这是与我的收藏名称有关的问题。 db.words.find().pretty() 完美运行!问题解决了。

      【讨论】:

        猜你喜欢
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 2015-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-01
        • 2014-07-08
        相关资源
        最近更新 更多