2016-09-19 56 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請求提供了一個很好的起點。

希望這會幫助正在尋找類似答案的人。