我嘗試從創建模型的檔案(連接資料庫的同一檔案)中匯入模型,當我嘗試使用它時,它是“未定義的”。
const { model } = require("../database");
model.findOne(. . .).then(. . .
這是我連接/創建的檔案
mongoose.connect(mongoUri, {
dbName: "x"
}).then(async () => {
const db = mongoose.connection;
db.on('error', err => console.error);
const schema = new mongoose.Schema({
. . .
});
const model = mongoose.model('userprofiles', schema );
module.exports = {
mongoose,
db,
model
};
});
我在 GitHub 問題和 StackOverflow 上瀏覽了很多帖子,但沒有一個給我一個簡潔、有效的答案
我嘗試使用在 Github 上的一個問題中看到的“autoCreate”,但它不起作用,同樣的事情發生了
mongoose.connect(mongoUri, {
dbName: "x",
autoCreate: true
}).then(async () => {
. . .
const model = mongoose.model('userprofiles', schema );
await model.init();
module.exports = {
mongoose,
db,
model
};
});
我應該澄清一下,如果我直接在模型檔案上作業,它作業得很好
uj5u.com熱心網友回復:
您需要將匯出與創建資料庫連接分開。模塊是同步加載的,所以如果你module.exports在(異步)回呼中宣告,它不會在檔案被require()'d 時宣告。
Mongoose 可以在沒有連接的情況下創建模型。
像這樣的東西:
mongoose.connect(mongoUri, {
dbName: "x"
}).then(() => {
const db = mongoose.connection;
db.on('error', err => console.error);
});
const schema = new mongoose.Schema({
. . .
});
const model = mongoose.model('userprofiles', schema );
module.exports = { mongoose, model };
如果您需要從應用程式的其他部分訪問連接,您可以使用mongoose.connection
uj5u.com熱心網友回復:
您可以簡單地使用回呼
const { model } = require("../database");
model.findOne({_id : 12489e}, function (err, data) {
if (err) {
console.log(err)
} else {
console.log(data);
}
});
注意:這
_id取決于您要查詢的內容。可能是name什么。還要確保您
mongod在終端中運行該命令。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493547.html
