[英]Mongoose find query is not executing
我試圖從mongodb獲取一些數據。 我能夠從模型MyModel
(在Server.js中定義)中獲取詳細信息。 但是我無法在Skill
模型(在Skill.js中定義)中執行find方法。
Server.js
let express = require('express');
let app = express();
var config = require('./config/config');
let bodyParser = require('body-parser');
var mongoose = require('mongoose');
var cors = require('cors')
var path = require("path");
let Skill = require('./app/models/Skill');
const dbURI = config.dbURI;
app.use(cors());
app.use(bodyParser.json(true));
mongoose.connect(dbURI, {useNewUrlParser: true});
mongoose.connection.on('connected', function () {
console.log("Connected");
});
var MyModel = mongoose.model('Test', new Schema({ name: String
}));
Skill.findOne(function(error, result) {
console.log("1",error,result);
});
MyModel.findOne(function(error, result) {
console.log("2",error,result);
});
app.listen(config.appPort,function () {
console.log('App running on port :: "' + config.appPort.toString() + '"');
});
app/models/Skill.js
var mongoose = require('mongoose');
var skillSchema = new mongoose.Schema({
name: String,
length: String,
});
var Skill = mongoose.model('Skill', skillSchema,'Skill');
module.exports = Skill;
Output
App running on port :: "8080"
Conneccted
2 null { _id: 5c6678215c50a65e59fc6a89, name: 'test', __v: 0 }
創建架構時我沒有發現任何問題。 有人可以幫我解決問題嗎?
我目前無法測試我的建議,但是我在您的代碼中注意到的一件事是您查詢,例如
Skill.findOne(function(error, result) {
console.log("1",error,result);
});
MyModel.findOne(function(error, result) {
console.log("2",error,result);
});
沒有在“連接”回調中執行; 可能不是主要問題,但是我將嘗試按以下方式更改代碼:
mongoose.connection.on('connected', function () {
console.log("Connected");
Skill.findOne(function(error, result) {
console.log("1",error,result);
});
MyModel.findOne(function(error, result) {
console.log("2",error,result);
});
});
關鍵是每個調用( .on
, .findOne
)都會啟動一個promise ,該promise封裝了一個異步行為。 我對你的地方,findOne
剛過調用.on
調用,你不能肯定貓鼬的連接已經准備好,當你開始.findOne
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.