javascript - Mongodb 不保存文档
问题描述
我正在尝试从 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");
在控制台中,我收到消息:“状态:正在工作”。
解决方案
sis_ditionary
是您的数据库名称,Words
应该是您的集合名称。如果从模式创建时未指定模型名称,mongoose 会自动为从模型中的集合创建复数名称
db.collection.find()
是使用 mongo-shell 时查找集合数据的命令。运行以下命令以获取数据:
use sis_dictionary
db.Words.find()
美化结果使用漂亮的方法
db.Words.find().pretty()
第一个命令将选择 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)
;
推荐阅读
- javascript - 用一行 HTML 和完全 Javascript 构建网站是个好主意吗?
- bash - 将标准输出重定向到文件并将标准错误重定向到同一个文件
- python - 为什么我的 webscraper 返回 [] 到 powershell?
- ros - 调用“make -j4 -l4”失败
- django - 媒体文件未在 pythonanywhere.com (Django) 上加载
- angular - 在 canActivateChild 返回 true/false 之前,正确等待多个可观察对象在路由保护中返回数据
- format - 现有的 vega-lite 地图突然看起来非常放大 - 发生了什么?
- elasticsearch - 在 Metricbeat 中设置 beat.hostname
- r - Power BI 中的 R 视觉排序顺序
- html - 我想制作一个根据您的选择提供输出的网站