发布没有'_id'字段的TypeScript对象?

时间:2016-09-19 14:14:29

标签: mongodb express angular typescript mongoose

我使用Express,Mongoose和Angular 2(TypeScript)制作一个网络应用程序。现在,我想发布一个MyClass实例而不包含任何_id字段。

在mongoose中我们可以使用_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

在我的angular 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类,或者我应该完全不同地发布它?

1 个答案:

答案 0 :(得分:0)

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

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

官方教程中原版Hero App的一个很好的例子。虽然它基于RC1,但它为如何正确执行RESTFUL请求提供了良好的起点。

希望这可以帮助那些正在寻找类似答案的人。

相关问题