我的问题很简单。 我可以运行猫鼬将文档保存到我在mlab上的数据库。 也可以通过邮递员在获取请求时查看保存的数据。 但是,当我使用本地mongodb而不是mlab时,请尝试通过运行“ mongo”在我的终端上显示db集合,然后选择连接到mongoose的同一个db 它显示了一个空的数据库。 我再次尝试发送带有新数据的请求。.结果是相同的,对邮递员和mlab都是积极的,但是当连接到本地mongodb并发布新数据时..根本没有任何东西。我可以将数据插入到我的外壳的唯一方法是通过命令insert()。
知道为什么会这样吗? 预先谢谢你。
app.js
var express = require("express");
var app = express();
var port = 8080;
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/test",{ useNewUrlParser: true });
// Model & Schema
var nameSchema = new mongoose.Schema({
firstName: String,
lastName: String
});
var User = mongoose.model("User", nameSchema);
// Routes
app.get('/users', (req, res) => {
User.find({}, (err, user) => {
if (err) throw err;
console.log(user)
res.send(user)
})
})
app.post("/addname", (req, res) => {
var myData = new User(req.body);
myData.save()
.then(item => {
res.send("item saved to database");
})
.catch(err => {
res.status(400).send("unable to save to database");
});
});
app.use("/", (req, res) => {
res.sendFile(__dirname + "/index.html");
});
app.listen(port, () => {
console.log("Server listening on port " + port);
});
当我使用mlab时:
但是在使用本地计算机时..:
答案 0 :(得分:1)
在添加api中尝试以下操作
app.post("/addname", (req, res) => {
req.body = JSON.parse(JSON.stringify(req.body)); //This line is Optional, some time req.body is in json buffer form so we are converting to pure json
User(req.body).save().then(item => {
console.log("DB Item saved --->", item);
res.status(200).send("item saved to database");
}).catch(err => {
res.status(400).send("unable to save to database");
});
});
不要忘记req.body必须包含firstName,lastName
在有关集合(架构)文档列表的问题更新后
您正在尝试
db.test.find()
由于您的架构名称为User而不会起作用,由于mongodb首选多个集合名称(因为它包含多个文档),因此将另存为用户
您必须尝试
db.users.find()
在您的mongo shell中
它将返回用户集合的所有文档。
如果要使用特定的集合名称(架构名称),则必须创建以下架构
// Model & Schema
var nameSchema = new mongoose.Schema({
firstName: String,
lastName: String
}, { collection: 'User' });
var User = mongoose.model("User", nameSchema);
在mongo shell中,您必须尝试
db.User.find();
要在mongo shell中列出所有集合,您必须尝试如下操作
db.getCollectionNames()