Javascript 对我的mongodb服务器进行api调用的好方法
我已经安装了mongodb,并使用Postman测试了创建、读取、更新和删除功能 然而,现在我想基本上从我的项目中的其他地方做HTTPPOST。要做到这一点,有哪些好方法可以继续 我已经在server.js中创建了我的路由:Javascript 对我的mongodb服务器进行api调用的好方法,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我已经安装了mongodb,并使用Postman测试了创建、读取、更新和删除功能 然而,现在我想基本上从我的项目中的其他地方做HTTPPOST。要做到这一点,有哪些好方法可以继续 我已经在server.js中创建了我的路由: import express from 'express'; import compression from 'compression'; import bodyParser from 'body-parser'; import path from 'path'; impo
import express from 'express';
import compression from 'compression';
import bodyParser from 'body-parser';
import path from 'path';
import serialize from 'serialize-javascript';
import {navigateAction} from 'fluxible-router';
import debugLib from 'debug';
import React from 'react';
import ReactDOM from 'react-dom/server';
import app from './app';
import HtmlComponent from './components/Html';
import { createElementWithContext } from 'fluxible-addons-react';
const env = process.env.NODE_ENV;
const debug = debugLib('fluxible-posts');
const server = express();
server.use('/public', express.static(path.join(__dirname, '/build')));
server.use(compression());
server.use(bodyParser.urlencoded({ extended: true }));
server.use(bodyParser.json());
server.use((req, res, next) => {
const context = app.createContext();
debug('Executing navigate action');
context.getActionContext().executeAction(navigateAction, {
url: req.url
}, (err) => {
if (err) {
if (err.statusCode && err.statusCode === 404) {
// Pass through to next middleware
next();
} else {
next(err);
}
return;
}
debug('Exposing context state');
const exposed = 'window.App=' + serialize(app.dehydrate(context)) + ';';
debug('Rendering Application component into html');
const markup = ReactDOM.renderToString(createElementWithContext(context));
const htmlElement = React.createElement(HtmlComponent, {
clientFile: env === 'production' ? 'main.min.js' : 'main.js',
context: context.getComponentContext(),
state: exposed,
markup: markup
});
const html = ReactDOM.renderToStaticMarkup(htmlElement);
debug('Sending markup');
res.type('html');
res.write('<!DOCTYPE html>' + html);
res.end();
});
});
const port = process.env.PORT || 3000;
server.listen(port);
console.log('Application listening on port ' + port);
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/fluxible-posts');
var Post = require('./database/postModel');
// routes
var router = express.Router();
server.use('/api/v1/', router);
router.use(function(req, res, next) {
// do logging
console.log('Something is happening.');
next(); // make sure we go to the next routes and don't stop here
});
// test route
router.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
router.route('/posts')
.post(function(req,res) {
var post = new Post();
post.title = req.body.title;
post.message = req.body.message;
post.image = req.body.image;
post.save(function(err) {
if(err) {
res.send(err);
}
res.json({ message : 'New post created' });
});
})
.get(function(req, res) {
Post.find(function(err, posts) {
if (err)
res.send(err);
res.json(posts);
});
});
router.route('/posts/:post_id')
// get the post with that id
.get(function(req, res) {
Post.findById(req.params.post_id, function(err, post) {
if (err)
res.send(err);
res.json(post);
});
})
// update the post with this id
.put(function(req, res) {
Post.findById(req.params.post_id, function(err, post) {
if (err)
res.send(err);
post.name = req.body.name;
post.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Post updated!' });
});
});
})
// delete the post with this id
.delete(function(req, res) {
Post.remove({
_id: req.params.post_id
}, function(err, post) {
if (err)
res.send(err);
res.json({ message: 'Successfully deleted' });
});
});
export default server;
从“express”导入express;
从“压缩”导入压缩;
从“body parser”导入bodyParser;
从“路径”导入路径;
从“序列化javascript”导入序列化;
从“fluxible router”导入{navigateAction};
从“debug”导入debugLib;
从“React”导入React;
从“react dom/server”导入react dom;
从“./app”导入应用程序;
从“./components/Html”导入HtmlComponent;
从“fluxible addons react”导入{createElementWithContext};
const env=process.env.NODE_env;
const debug=debugLib('fluxible-posts');
const server=express();
使用('/public',express.static(path.join(uu dirname,'/build'));
使用(compression());
use(bodyParser.urlencoded({extended:true}));
use(bodyParser.json());
服务器使用((请求、恢复、下一步)=>{
const context=app.createContext();
调试(“执行导航操作”);
context.getActionContext().executeAction(navigateAction{
url:req.url
},(错误)=>{
如果(错误){
if(err.statusCode&&err.statusCode==404){
//传递到下一个中间件
next();
}否则{
下一个(错误);
}
返回;
}
调试(“暴露上下文状态”);
常量exposed='window.App='+序列化(App.deterhemate(context))+';';
调试(“将应用程序组件呈现为html”);
const markup=ReactDOM.renderToString(createElementWithContext(context));
常量htmlElement=React.createElement(HtmlComponent{
clientFile:env==='production'?'main.min.js':'main.js',
上下文:context.getComponentContext(),
国家:暴露,
标记:标记
});
const html=ReactDOM.renderToStaticMarkup(HtmleElement);
调试(“发送标记”);
res.type('html');
res.write(“”+html);
res.end();
});
});
const port=process.env.port | 3000;
监听(端口);
log('端口上侦听的应用程序'+端口);
var mongoose=require('mongoose');
猫鼬mongodb://localhost/fluxible-posts');
var Post=require('./数据库/postModel');
//路线
var router=express.router();
使用('/api/v1/',路由器);
路由器使用(功能(req、res、next){
//伐木
log('发生了什么事');
next();//确保我们走下一条路线,不要停在这里
});
//试验路线
router.get('/',函数(req,res){
res.json({消息:万岁!欢迎使用我们的api!'});
});
router.route(“/posts”)
.post(功能(请求、恢复){
var post=新的post();
post.title=req.body.title;
post.message=req.body.message;
post.image=req.body.image;
post.save(函数(err){
如果(错误){
res.send(err);
}
res.json({message:'newpost created'});
});
})
.get(函数(请求、恢复){
Post.find(函数(err,posts){
如果(错误)
res.send(err);
res.json(员额);
});
});
router.route('/posts/:post_id'))
//用那个身份证去邮局
.get(函数(请求、恢复){
Post.findById(req.params.Post_id,函数(err,Post){
如果(错误)
res.send(err);
res.json(邮政);
});
})
//使用此id更新帖子
.put(功能(请求、恢复){
Post.findById(req.params.Post_id,函数(err,Post){
如果(错误)
res.send(err);
post.name=req.body.name;
post.save(函数(err){
如果(错误)
res.send(err);
res.json({message:'Post updated!'});
});
});
})
//删除具有此id的帖子
.删除(功能(请求、恢复){
Post.remove({
_id:req.params.post_id
},函数(错误,post){
如果(错误)
res.send(err);
res.json({message:'Successfully deleted'});
});
});
导出默认服务器;
现在,如果我想从项目中的另一个js文件发出POST请求,我该怎么做?看起来您的API是REST API。在这种情况下,您可以使用。谢谢。它说构建失败了。我还应该用吗?