我正在使用Next.js和MongoDB(mongoose)制作一个教育门户网站。学校管理员可以从他们的 Jmeter 板添加重要通知,学生可以从他们的 Jmeter 板查看这些通知。大多数mongoose操作必须在Next.js自己提供的API中完成,所以我在MongoDB上创建文档的代码位于/API/目录中。代码:
/**
* @param {import("next").NextApiRequest} req
* @param {import("next").NextApiResponse} res
*/
import circulars from '../../../model/hw'
export default async function stuffss(req, res) {
try{
const {number, text} = req.body
console.log("Connecting to mongo")
mongoose.connect("mongodb+srv://usernameherer:passowordhere@cluster0.clusteridhere.mongodb.net/stuff?retryWrites=true&w=majority")
console.log("Connected to mongo")
console.log("Creating document")
const createdCircular = await circulars.create(req.body)
console.log("Created document")
res.json({ createdCircular })
}
catch(error) {
console.log(error)
res.json({ error })
}
}
通告模式:
const mongoose = require('mongoose')
const circularsSchema = new mongoose.Schema({
number: {
unique: true,
required: true,
type: Number
},
text: {
required: true,
type: String
}
})
const circulars = mongoose.models.circularss || mongoose.model("circularss", circularsSchema)
export default circulars
使用失眠发送post请求会产生以下结果:
{
"createdCircular": {
"number": 15463,
"text": "loreum ipsum",
"_id": "63cb86421ca543a731cb39c3",
"__v": 0
}
}
但是当我去MongoDB网站上找它的时候,它没有任何结果。我相信这可能是因为我连接的方式或者我没有正确地将它发送到一个集合。
这是我的数据库的结构:
有没有办法连接到“东西”数据库和“通告”集合?
2条答案
按热度按时间6tqwzwtp1#
似乎需要在连接字符串中指定数据库。
例如
参考:https://mongoosejs.com/docs/connections.html
rjee0c152#
下面是我解决这个问题的方法。在我的模式中,我放置了相同的
circulars
,为它创建了一个新的集合,我还必须从mongoose.connect
中删除await。这一组合为我解决了这个问题。您还应该确保mongoose.models.name
与mongoose.model("name", schema)
相同