无法使用Express API和节点JS(Angular4)将数据发布到mongo db

时间:2018-08-20 17:54:19

标签: node.js angular express mean-stack

我已经成功使用Express API和node js从MongoDB中获取数据,并将其绑定到有角ng2-smart-table。 在单击表的添加按钮时,我正在调用express API,但在api.js中未调用我的post方法,我尝试在帖子内部打印console.log,但未调用它。 为了更好地理解,我发布了代码:

Component.ts

onCreateConfirm(event,_dataService): void {          
this._dataService.postMutualFunds(event.newData);
event.confirm.resolve(event.newData);
}

data.service.ts

postMutualFunds(parameterValue:any ){
   return this._http.post('/add_mutual_funds', 
   {params:parameterValue}).map(result => this.result = result.json().data);
}

api.js

var express = require('express');
var router = express.Router();
var MongoClient = require('mongodb').MongoClient;
var ObjectID = require('mongodb').ObjectID;
var bodyParser = require("body-parser");

 const connection  = (closure) => {
 return
 MongoClient.connect('mongodb://xxx.com:63898/xx', (err,db) => {
 if(err){
        return console.log(err);
    }
    closure(db);
    });
  }
 //Get call
 router.get('/mutual_funds',(req,res) =>{
    console.log("test get"); //This is executed
    connection((db) => {           
    var projection = {_id:0};
    db.collection('mutual_funds').find().project(projection). 
    toArray().then((mutual_funds) => {
           response.data = mutual_funds;
           res.json(response);
       })
     })      
  })

 //Post call
 router.post('/mutual_funds',(req,res) => {
        console.log(req.body.params);
        console.log("test post");
        db.collection('mutual_funds').insertOne(req.body.params)
 })

  module.exports = router;

enter image description here

现在我可以调用api js,但无法将数据插入到mongodb中。请在下面的api.js执行输出中找到屏幕截图 //为什么我无法发布数据?(更新了上面的邮政编码)遇到错误500

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

您没有订阅该服务

onCreateConfirm(event,_dataService): void {          
  this._dataService.postMutualFunds(event.newData).subscribe(    
   (data)=>{
      console.log(data)     
   },
   (err)=>{
     console.log(err)
   }
 )
 event.confirm.resolve(event.newData);
}
  

service方法返回一个Observable配置   数据,则该组件订阅该方法的返回值。的   订阅回调将数据字段复制到组件的   config对象,在组件模板的数据绑定中   显示。

答案 1 :(得分:0)

您为什么不订阅服务功能调用

this._dataService.postMutualFunds(event.newData).subscribe((data)=>{ console.log(data)},
(err)=>console.log(err),
()=>console.log('Observable complete')
);