【发布时间】:2021-12-27 19:45:43
【问题描述】:
我正在尝试提取 MongoDB Atlas 上 products 集合中的所有 products。我得到的只是空数组。
我与数据库的连接正确。
我不确定模型以及我如何使用 Mongoose。
这是我的联系方式...connectDb.js
import mongoose from "mongoose";
const connection = {};
async function connectDb() {
if (connection.isConnected) {
console.log("Connection in progress");
return;
}
const db = await mongoose.connect(process.env.MONGO_SRV, {
useCreateIndex: true,
useFindAndModify: false,
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log("DB Connected");
connection.isConnected = db.connections[0].readyState;
}
export default connectDb;
这是我的架构..../models/Product.js
import mongoose from "mongoose";
import shortid from "shortid";
const { String, Number } = mongoose.Schema.Types;
const ProductSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
price: {
type: Number,
required: true,
},
description: {
type: String,
required: true,
},
sku: {
type: String,
unique: true,
required: true,
default: shortid.generate(),
},
mediaUrl: {
type: String,
required: true,
},
});
// Check for an existing `models.Product` ... then run the product schema
export default mongoose.models.Product ||
mongoose.model("products", ProductSchema);
这是我的查询..../api/products.js
import Product from "../../models/Product";
import connectDb from "../../utils/connectDb";
connectDb();
export default async (req, res) => {
const products = await Product.find({});
console.log(`products are ... ${products}`);
res.status(200).json(products);
};
这是我的数据库
这是控制台中的结果...
根据 Mongoose 文档,如果 db.connections[0].readyState} 返回 1... 表示已连接 Connection Doc
【问题讨论】:
-
我阅读了其他论坛并进行了以下更改以确保没有重复... 1)我将猫鼬更新到最新 2)我使用
.find({})而不是.find() -
您确定连接到正确的数据库吗?
-
您从应用程序的哪个部分运行查询(我在帖子中看到了查询定义的一部分)?
-
我知道连接很好,因为
console.log("DB Connected");成功运行 -
@RobertMoskal 我为
connections.readyState添加了console.log(),证明我已连接。
标签: node.js mongodb mongoose mongodb-atlas