簡體   English   中英

Mongodb 不保存文檔

[英]Mongodb does not save a document

我正在嘗試從 HTML 公式存儲一些數據。 我使用 HTTP POST 方法發送數據,並使用 Node.js 中的 Express 框架接收它們。 數據到達並且它似乎可以工作,但是當我嘗試使用 ZCCADCDEDB567ABAE643E15DCF0974E503Z 將它們存儲到 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");

在控制台中,我收到消息:“狀態:正在工作”。

sis_ditionary是您的數據庫名稱, Words應該是您的集合名稱。 由於 mongoose 自動創建復數名稱,以便從 model 中收集,如果 model 從模式創建時未指定名稱

db.collection.find()是使用 mongo-shell 時查找集合數據的命令。 運行以下命令以獲取數據:

  • use sis_dictionary

  • db.Words.find()

    美化結果使用漂亮的方法

    db.Words.find().pretty()

第一個命令將 select DB 和第二個命令列表收集數據。

因此,當您執行db.sis_dictionary.find()時,它將不起作用,因為 sis_dictinary 是您的數據庫名稱。

Nodejs 方式與“貓鼬”

//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)

根據您的數據庫 URL, mongodb://localhost:27017/sis_dictionarysis_dictionary是數據庫名稱。

根據您的mongoose model, Word是您的收藏名稱。

保存文檔時,它會保存在集合下。 所以你必須在collections下進行查詢。

因此,當您嘗試使用DB.sis_dictionary.find()獲取數據時,它肯定是行不通的。

您的查詢應該類似於db.collection.find()

使用以下查詢,

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

有關更多信息,請查看文檔

謝謝大家。 你沒問題,這是與我的 collections 名稱有關的問題。 db.words.find().pretty() 完美運行。問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM