javascript - 猫鼬返回空数组(我尽我所能)
问题描述
架构:文件名:Login.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const LoginSchema = new Schema({
uname: {
type: String,
required: true
},
pass: {
type: String,
required: true
}
});
module.exports = Login = mongoose.model('login', LoginSchema);
index.js 文件:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
// Connect to MongoDB
mongoose
.connect(
'mongodb://mongo:27017/docker-node-mongo',
{ useNewUrlParser: true }
)
.then(() => console.log('MongoDB Connected'))
.catch(err => console.log(err));
const Login = require('./models/Login');
app.post('/',(req,res) => {
const newLogin = new Login({
uname: req.body.uname,
pass: req.body.pass
});
console.log(newLogin);
newLogin.save();
Login.find({},function (err, logins) {
if (err) return console.error(err);
console.log("cool: ",logins);
});
res.redirect('/main');
});
这是控制台中的输出:MongoDB Connected
{ _id:5fab21a3931694001290326e,uname:'guest',通过:'guest'}
凉爽的: []
.find() 的输出为空。并且就在我输入一个条目之前,该条目甚至显示在控制台中。我看到了复数的东西,它不起作用。
请帮忙。
解决方案
Mongodb save() 是异步的,因此它不会等待文档的保存。当它尝试查找文档时,由于尚未保存,因此无法找到它。您可以使用 async/await 以便它等待保存过程然后继续。
app.post('/', async (req,res) => {
const newLogin = new Login({
uname: req.body.uname,
pass: req.body.pass
});
console.log(newLogin);
await newLogin.save();
Login.find({},function (err, logins) {
if (err) return console.error(err);
console.log("cool: ",logins);
});
res.redirect('/main');
});
推荐阅读
- python - 在我的 crud 操作中创建一个撤消按钮
- node.js - 有没有办法在 aws-sdk 或 aws-amplify 中不提供密码的情况下为用户生成 cognito auth 令牌?
- sql - 使用批量postgres将数据从表复制到表?
- node.js - 如何使用 server.js 获取应用程序的路径
- entity-framework-core - Entity Framework Core 查询总是返回缓存的数据
- ruby-on-rails - Ruby on Rails 不同页面上的多个更新表单
- javascript - 将 jest 与 tensorflow.js 一起使用会产生错误
- windows-10-universal - Xamarin Form - 如何在 uwp 桌面应用程序中打开文档
- python-3.x - 使用 awsretry 模块时没有名为 syslog 的模块(未找到模块错误)
- python - 如何将数组上采样到任意大小?