使用node.js在mongo db中发布带有用户详细信息的数据

时间:2018-10-08 07:29:26

标签: node.js angular express mean-stack

我正在使用Angular 6的MEAN堆栈来开发Web应用程序。我有一种表单,可以将数据提交到MongoDB中。以下是保存功能,它可以正常工作。 它将拉伸值保存在数据库中。

saveExtrudedHeightValue(extrudedHeight: NgForm) {
  if (extrudedHeight.value != "" && extrudedHeight.value != null) {
    this.extrudedHeightService.saveExtrudedHeight(extrudedHeight.value).subscribe(res => {
      console.log(res);
    }, (err) => {
      console.log(err);
    });
  }
}

这是模特

// Schema for extruded height panel
var extrudedHeightSchema = new mongoose.Schema({
  userName: {
    type: String
  },
  extrudedHeight: {
    type: Number
  },

});
module.exports = mongoose.model('extrudedHeightValue', extrudedHeightSchema);

这是我的发帖路线

//post extrudedHeight values
router.post("/save", function(req, res) {
  var mod = new extrudedHeight(req.body);

  extrudedHeight.findOneAndUpdate({
      userName: req.body.email,
      extrudedHeight: req.body.extrudedHeight,
    },
    req.body, {
      upsert: true,
      new: true
    },
    function(err, data) {
      if (err) {
        console.log(err);
        res.send(err);
      } else {

        res.send(mod);
      }
    }
  );
});

这是服务。

// service for save extruded height 
saveExtrudedHeight(extrudedHeight): Observable < any > {
  return this.http.post('/extrudedHeight/save', extrudedHeight, httpOptions)
    .pipe(
      catchError(this.handleError)
    );
}

现在,我想使用当前用户的userName将数据保存在DB中。我可以借此检索当前用户的userNamethis.payload.user['email'] 我的问题是我不知道如何传递此userName来发布要保存在db中的路由。

这是我获得令牌的地方。

this.authService.onTokenChange().subscribe(
  (token: NbAuthJWTToken) => {
    if (token.isValid()) {
      this.user = token.getPayload().user;
      this.payload = token.getPayload();
      console.log(this.payload.user['email']);
    }
  }
)

1 个答案:

答案 0 :(得分:0)

您可以先在this.authService.onTokenChange方法内调用saveExtrudedHeight,然后使用flatMap运算符解开{{1}返回的内部Observable }。

这将转换为如下代码:

http.post

PS:我不确定这是否行得通,因为我尚未对其进行测试,而且我也需要很少的StackBlitz。