[英]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_dictionary
, sis_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.