我已经将一个 json 文件上传到 MongoDB Atlas 集群(使用 mongoimport),现在我正尝试使用 express 和 mongoose 将数据显示到本地主机。
我已经到了可以连接到集群的地步,但我在获取和显示数据方面遇到了困难。以下是我到目前为止的代码。我想使用 mongoose 通过 Nodejs 查询数据库,就像我在 Mongo shell 的命令行上所做的那样。我在这里缺少什么?
const express = require("express");
const mongoose = require("mongoose");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// // Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => res.send(db.restaurants.find()));
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
最佳答案
首先,初始化一个Mongoose查询数据所需要的模型。由于您已导入数据,因此不必构建架构。
// restaurants.js
const mongoose = require('mongoose');
const RestaurantsSchema = new mongoose.Schema({});
module.exports = mongoose.model('Restaurants', RestaurantsSchema)
然后,将模式“Restaurants”导入到您的主驱动程序文件中,并通过链接过滤器指定您的查询,如下所示:
// main.js
const express = require("express");
const mongoose = require("mongoose");
const Restaurants = require("./restaurants");
const app = express();
// DB config using Mongo Atlas
const uri = require("./config/keys").mongoURI;
// Connect to Mongo
mongoose
.connect(uri, { useNewUrlParser: true })
.then(() => console.log("MongoDB Connected..."))
.catch(err => console.log(err));
// @route GET
app.get("/", (req, res) => {
Restaurants.find()
.where("filter1").gt(200)
.where("filter2").equals("$$$")
.where("filter3").nin(["Coffee"])
.limit(100)
.sort("sort1")
.select("column1 column2 column3")
.then(restaurants => res.json(restaurants))
.catch(err => res.status(404).json({ success: false }));
});
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
您应该填写“filter”、“sort”、“column”、“gt”、“equals”、“limit”和“nin”的适用值。
关于javascript - 如何使用Mongoose查询导入的json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135405/