通过local node.js服务器连接到mongoDB。API可以';t设置或进入正确配置的路由
帮帮我!尽管连接到数据库并且(显然)正确定义了配置的所有部分(它们超时),但我似乎无法使用GET或PUT-in-postman(通过API) 请求(通过邮递员): 事实:通过local node.js服务器连接到mongoDB。API可以';t设置或进入正确配置的路由,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,帮帮我!尽管连接到数据库并且(显然)正确定义了配置的所有部分(它们超时),但我似乎无法使用GET或PUT-in-postman(通过API) 请求(通过邮递员): 事实: 我肯定已经连接到数据库了。控制台在记录API成功消息后记录1 所有版本都兼容 我试过3个不同的在线数据库,都有这个问题,我肯定做错了什么 DA代码: 服务器文件: var express = require('express'), app = express(), port = process.env.PORT ||
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
mongoose = require('mongoose'),
Task = require('./api/models/model'), //created model loading here
bodyParser = require('body-parser');
// mongoose instance connection url connection
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://<my username>:<mypassword>@groceriescluster-shard-00-00-vaffe.mongodb.net:27017,groceriescluster-shard-00-01-vaffe.mongodb.net:27017,groceriescluster-shard-00-02-vaffe.mongodb.net:27017/test?ssl=true&replicaSet=GroceriesCluster-shard-0&authSource=admin');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var routes = require('./api/routes/routes'); //importing route
routes(app); //register the route
app.listen(port);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
console.log('todo list RESTful API server started on: ' + port);
setTimeout(function(){console.log(mongoose.connection.readyState)},
5000)
型号:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TaskSchema = new Schema({
name: {
type: String,
required: 'Kindly enter the name of the task'
},
Created_date: {
type: Date,
default: Date.now
},
status: {
type: [{
type: String,
enum: ['pending', 'ongoing', 'completed']
}],
default: ['pending']
}
});
module.exports = mongoose.model('Tasks', TaskSchema);
路线:
'use strict';
module.exports = function(app) {
var todoList = require('../controllers/controller');
// todoList Routes
app.route('/tasks')
.get(todoList.list_all_tasks)
.post(todoList.create_a_task);
app.route('/tasks/:taskId')
.get(todoList.read_a_task)
.put(todoList.update_a_task)
.delete(todoList.delete_a_task);
};
package.json
{
"name": "api",
"version": "1.0.0",
"description": "test env api",
"main": "index.js",
"scripts": {
"test": "echo \\\"No time for tests today\\\" && exit1\""
},
"keywords": [
"Here",
"it",
"goes!"
],
"author": "Zack Haigh",
"license": "ISC",
"devDependencies": {
"install": "^0.10.4",
"nodemon": "^1.14.11",
"npm": "^5.6.0"
},
"dependencies": {
"@google-cloud/storage": "^1.5.2",
"body-parser": "^1.18.2",
"express": "^4.16.2",
"mongo": "^0.1.0",
"mongodb": "^2.2.34",
"mongoose": "^5.0.1"
}
}
我看不出您的问题,但我可以向您展示我对
NodeJS
-mongoose
和express
的配置
app.js
var mongoose = require('mongoose')
const { db } = require('./config.js')
mongoose.Promise = global.Promise
var app = express()
mongoose.connect(`mongodb://${db.user}:${db.password}@ds135486.mlab.com:35486/${db.name}`, { useMongoClient: true })
.then(function (info) {
console.log("Conexion MongoDB mlab exitosa...")
}).catch(function (error) {
console.log("Error MongoDB mlab", error)
})
app.use('/', require('./routes/dbtest'))
/*...more code...*/
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var Corpus = new Schema({
fecha: Date, //UTC time
compressed: {
type: Boolean,
default: false
}
})
module.exports = mongoose.model('Corpus', Corpus);
const router = require('express').Router()
const mongoose = require("mongoose")
const Corpus = require('../models/Corpus.js')
router.get("/corpus", async function (req, res, next){
try {
var docs = await Corpus.find({}, 'fecha compressed').exec()
docs = docs.map(d=> d.toObject()).sort((d1, d2)=> d1.fecha - d2.fecha)
res.json(docs)
} catch (e) { next(e) }
})
module.exports = router;
模型/Corpus.js
var mongoose = require('mongoose')
const { db } = require('./config.js')
mongoose.Promise = global.Promise
var app = express()
mongoose.connect(`mongodb://${db.user}:${db.password}@ds135486.mlab.com:35486/${db.name}`, { useMongoClient: true })
.then(function (info) {
console.log("Conexion MongoDB mlab exitosa...")
}).catch(function (error) {
console.log("Error MongoDB mlab", error)
})
app.use('/', require('./routes/dbtest'))
/*...more code...*/
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var Corpus = new Schema({
fecha: Date, //UTC time
compressed: {
type: Boolean,
default: false
}
})
module.exports = mongoose.model('Corpus', Corpus);
const router = require('express').Router()
const mongoose = require("mongoose")
const Corpus = require('../models/Corpus.js')
router.get("/corpus", async function (req, res, next){
try {
var docs = await Corpus.find({}, 'fecha compressed').exec()
docs = docs.map(d=> d.toObject()).sort((d1, d2)=> d1.fecha - d2.fecha)
res.json(docs)
} catch (e) { next(e) }
})
module.exports = router;
路由/dbtest.js
var mongoose = require('mongoose')
const { db } = require('./config.js')
mongoose.Promise = global.Promise
var app = express()
mongoose.connect(`mongodb://${db.user}:${db.password}@ds135486.mlab.com:35486/${db.name}`, { useMongoClient: true })
.then(function (info) {
console.log("Conexion MongoDB mlab exitosa...")
}).catch(function (error) {
console.log("Error MongoDB mlab", error)
})
app.use('/', require('./routes/dbtest'))
/*...more code...*/
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var Corpus = new Schema({
fecha: Date, //UTC time
compressed: {
type: Boolean,
default: false
}
})
module.exports = mongoose.model('Corpus', Corpus);
const router = require('express').Router()
const mongoose = require("mongoose")
const Corpus = require('../models/Corpus.js')
router.get("/corpus", async function (req, res, next){
try {
var docs = await Corpus.find({}, 'fecha compressed').exec()
docs = docs.map(d=> d.toObject()).sort((d1, d2)=> d1.fecha - d2.fecha)
res.json(docs)
} catch (e) { next(e) }
})
module.exports = router;
我看不出您的问题,但我可以向您展示我对
NodeJS
-mongoose
和express
的配置
app.js
var mongoose = require('mongoose')
const { db } = require('./config.js')
mongoose.Promise = global.Promise
var app = express()
mongoose.connect(`mongodb://${db.user}:${db.password}@ds135486.mlab.com:35486/${db.name}`, { useMongoClient: true })
.then(function (info) {
console.log("Conexion MongoDB mlab exitosa...")
}).catch(function (error) {
console.log("Error MongoDB mlab", error)
})
app.use('/', require('./routes/dbtest'))
/*...more code...*/
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var Corpus = new Schema({
fecha: Date, //UTC time
compressed: {
type: Boolean,
default: false
}
})
module.exports = mongoose.model('Corpus', Corpus);
const router = require('express').Router()
const mongoose = require("mongoose")
const Corpus = require('../models/Corpus.js')
router.get("/corpus", async function (req, res, next){
try {
var docs = await Corpus.find({}, 'fecha compressed').exec()
docs = docs.map(d=> d.toObject()).sort((d1, d2)=> d1.fecha - d2.fecha)
res.json(docs)
} catch (e) { next(e) }
})
module.exports = router;
模型/Corpus.js
var mongoose = require('mongoose')
const { db } = require('./config.js')
mongoose.Promise = global.Promise
var app = express()
mongoose.connect(`mongodb://${db.user}:${db.password}@ds135486.mlab.com:35486/${db.name}`, { useMongoClient: true })
.then(function (info) {
console.log("Conexion MongoDB mlab exitosa...")
}).catch(function (error) {
console.log("Error MongoDB mlab", error)
})
app.use('/', require('./routes/dbtest'))
/*...more code...*/
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var Corpus = new Schema({
fecha: Date, //UTC time
compressed: {
type: Boolean,
default: false
}
})
module.exports = mongoose.model('Corpus', Corpus);
const router = require('express').Router()
const mongoose = require("mongoose")
const Corpus = require('../models/Corpus.js')
router.get("/corpus", async function (req, res, next){
try {
var docs = await Corpus.find({}, 'fecha compressed').exec()
docs = docs.map(d=> d.toObject()).sort((d1, d2)=> d1.fecha - d2.fecha)
res.json(docs)
} catch (e) { next(e) }
})
module.exports = router;
路由/dbtest.js
var mongoose = require('mongoose')
const { db } = require('./config.js')
mongoose.Promise = global.Promise
var app = express()
mongoose.connect(`mongodb://${db.user}:${db.password}@ds135486.mlab.com:35486/${db.name}`, { useMongoClient: true })
.then(function (info) {
console.log("Conexion MongoDB mlab exitosa...")
}).catch(function (error) {
console.log("Error MongoDB mlab", error)
})
app.use('/', require('./routes/dbtest'))
/*...more code...*/
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var Corpus = new Schema({
fecha: Date, //UTC time
compressed: {
type: Boolean,
default: false
}
})
module.exports = mongoose.model('Corpus', Corpus);
const router = require('express').Router()
const mongoose = require("mongoose")
const Corpus = require('../models/Corpus.js')
router.get("/corpus", async function (req, res, next){
try {
var docs = await Corpus.find({}, 'fecha compressed').exec()
docs = docs.map(d=> d.toObject()).sort((d1, d2)=> d1.fecha - d2.fecha)
res.json(docs)
} catch (e) { next(e) }
})
module.exports = router;
这让我很困惑:
var routes = require('./api/routes/routes'); //importing route
routes(app); //register the route
据我所知,在Express.js v.4中,在服务器中插入路由的方式如下:
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
我将以这种方式定义路由,这样您就不必使用app as param的函数:
var express = require('express');
var todoList = require('../controllers/controller');
var router = express.Router();
// todoList Routes
router.route('/tasks')
.get(todoList.list_all_tasks)
.post(todoList.create_a_task);
router.route('/tasks/:taskId')
.get(todoList.read_a_task)
.put(todoList.update_a_task)
.delete(todoList.delete_a_task);
module.exports = router;
在服务器文件中,请按如下方式使用它们:
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
另外,如果您试图使用
app.router
,它在Express.js v.3中被留下,并在升级到v.4时被删除。这让我非常困惑:
var routes = require('./api/routes/routes'); //importing route
routes(app); //register the route
据我所知,在Express.js v.4中,在服务器中插入路由的方式如下:
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
我将以这种方式定义路由,这样您就不必使用app as param的函数:
var express = require('express');
var todoList = require('../controllers/controller');
var router = express.Router();
// todoList Routes
router.route('/tasks')
.get(todoList.list_all_tasks)
.post(todoList.create_a_task);
router.route('/tasks/:taskId')
.get(todoList.read_a_task)
.put(todoList.update_a_task)
.delete(todoList.delete_a_task);
module.exports = router;
在服务器文件中,请按如下方式使用它们:
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
var routes = require('./api/routes/routes'); //importing route
app.use(routes); //register the routes
另外,如果您尝试使用
app.router
,它在Express.js v.3中被保留,并在升级到v.4时被删除。您尝试连接时出现了什么错误?你是怎么联系的?我们需要更多的细节。唯一的错误是邮递员的要求。“无法得到任何回应”。这不是一个很有用的方法,但我希望它能有所帮助。当你尝试连接时会出现什么错误?你是怎么联系的?我们需要更多的细节。唯一的错误是邮递员的要求。“无法得到任何回应”。这不是一个非常有用的例子,但我希望它有帮助。谢谢你的例子!这种方法也存在同样的问题。连接到数据库,无法对数据库执行任何操作。感谢提供示例!这种方法也存在同样的问题。连接到数据库,无法对数据库执行任何操作。谢谢兄弟!现在我在节点控制台中得到一个500错误和“TypeError:app.route不是函数”。你已经帮了很多忙,但是你知道为什么会发生这种情况吗?我更新了我的答案。我认为您弄乱了路线定义以及如何在Express应用程序中使用它们。首先,我要感谢您迄今为止提供的所有帮助。我已经更新了我的代码(如果你不相信我要说的话,可以发布)。我又回到原点了!本地API调用仍然有效(例如,router.route('/').get(function(req,res){res.json({message:'woot woot!'});
,但只要我尝试访问远程mongodb服务器,我就会得到“无法获得任何响应”。我知道我的凭据是正确的,因为我现在已登录mongo shell中的DB。使用正确的字符串格式!使用mlab和atlas进行了尝试。我需要先手动创建集合吗?我读过的每个教程都有您直接从API POST写入DB的内容。如果您没有数据,您将无法检索数据!谢谢老兄!现在我收到一个500错误和“TypeError:app.route不是函数”在节点控制台中。您已经帮了很多忙,但是您知道为什么会发生这种情况吗?我更新了我的答案。我认为您弄乱了路由定义以及如何在Express应用程序中使用它们。首先,我要感谢您迄今为止提供的所有帮助。我已经更新了代码(如果您不相信我将要说的话,可以发布)。我又回到原点了!本地API调用仍然有效(即,router.route('/').get(function(req,res){res.json({message:'woot woot!'});
,但只要我尝试访问远程mongodb服务器,我就会得到“无法获得任何响应”。我知道我的凭据是正确的,因为我现在已登录mongo shell中的DB。使用正确的字符串格式!使用mlab和atlas进行了尝试。我是否需要先手动创建集合?我读过的每个教程都有您直接从API POST向DB写入的内容。如果您没有数据,则无法检索数据!