2016-09-19 58 views
0

我使用Express,Mongoose和Angular 2(TypeScript)制作网络应用程序。现在我想发布一个MyClass实例,但没有任何_id字段。没有'_id'字段的Post TypeScript对象?

在猫鼬,我们可以使用_id做了很多有关MongoDB的操作,所以这里是我一直在使用mongoose

router.post('/', function(req, res, next) { 
    Package.create(req.body, function (err, post) { 
    if (err) return next(err); 
     res.json(post); 
    }); 
}); 


/* GET /package/id */ 
router.get('/:id', function(req, res, next) { 
    Package.findById(req.params.id, function (err, post) { 
    if (err) return next(err); 
    res.json(post); 
    }); 
}); 

/* PUT /package/:id */ 
router.put('/:id', function(req, res, next) { 
    Package.findByIdAndUpdate(req.params.id, req.body, function (err, post, after) { 
    if (err) return next(err); 

    res.json(post); 
    }); 
}); 

为了遏制该领域_id服务器端完成我创建了一个TS类像这个:

export class Package{ 


    constructor(
     public guid: string, 
     ... 
     [other fields] 
     ... 
     public _id: string 
    ){} 

} 

请注意_id在最后。

以我的角2的服务我这样做的JSON对象发布到服务器

//create new pakcage 
    private post(pck: Package): Promise<Package> { 
     let headers = new Headers({ 
      'Content-Type': 'application/json' 
     }); 

     return this.http 
      .post(this.packageUrl, JSON.stringify(pck), { headers: headers }) 
      .toPromise() 
      .then(res => res.json()) 
      .catch(this.handleError); 

    } 

然后我接收到错误如下面的屏幕截图所示:

enter image description here

在这它表明我发回的对象有一个空的_id字段。

如何在没有_id字段的情况下发布ts课程,还是应该完全不同?

回答

0

由于没有人给出答案,我去了互联网,找到了一个很好的例子来说明如何实现一个Angular2 - Mongoose - Express系统。

https://github.com/moizKachwala/Angular2-express-mongoose-gulp-node-typescript

一个很好的例子,根据官方教程原作主人公应用。尽管它基于RC1,但它为如何正确执行RESTFUL请求提供了一个很好的起点。

希望这会帮助正在寻找类似答案的人。