Я младший разработчик и разрабатываю службу REST с использованием Node JS, Express, MongoDB в Azure. В моем первом сервисе для отдыха я всегда разрабатывал с использованием Mongoose, но теперь я заметил, что есть некоторые проблемы с использованием mongoose в Cosmos DB. Подключение к Cosmos DB Узел js работает с MongoDb mongoclient. Я создал файл db.js:
var mongoClient = require("mongodb").MongoClient;
mongoClient.connect("mongodb://dbname:[email protected]:10255/?ssl=true", function (err, db) {
db.close();
});
module.exports = mongoClient;
и я определил модель:
var mongoClient = require('../config/db.js');
var ProfileSchema = mongoClient.Schema({
companyName: { type: String, required: true },
firstname: {type: String, required: true},
address: {type: String, required: true},
city: {type: String, required: true},
state: {type: String, required: false},
postalcode: {type: String, required: true},
country: {type: String, required: true},
telephone: {type: String, required: true},
email: {type: String, required: true}
});
mongoClient.model('Profile', ProfileSchema);
module.exports = mongoClient.model('Profile');
объявление это мой роутер:
var Profile = require('../models/Profile');
router.get('/profile', function(req,res){
Profile.find({}, (err, profile) => {
if (err) {
console.info(err);
return res.status(400).send({ status: 'ko', data: {msg: err.message }});
}
res.status(200).send({status: 'ok', data: {msg: 'List', profile: profile}});
});
});
Теперь, когда я пытался запустить приложение, я получаю эту ошибку: mongoClient.Schema не является функцией Я не знаю, в порядке ли мой код? Как я могу исправить?
Спасибо Лучший
Я думаю, вы смешиваете концепции. Вы пытаетесь создать схему MongoDB с помощью MongoClient, который этого не поддерживает. Для этого используйте Mongoose: https://mongoosejs.com/docs/guide.html
MongoClient - это базовый драйвер для MongoDB, и я не думаю, что вы хотите использовать его напрямую.
Кроме того, в вашем файле модели вы используете это:
var mongoClient = require('../config/db.js');
и я не знаю, что у вас есть в файле db.js, но я не думаю, что вы реализовали там специальную функцию Schema (), поэтому вы получаете сообщение об ошибке «mongoClient.Schema не является функцией». Чтобы это работало, избегайте использования MongoClient напрямую и ознакомьтесь с некоторыми руководствами по Mongoose.