我使用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);
}
然後我接收到錯誤如下面的屏幕截圖所示:
在這它表明我發回的對象有一個空的_id
字段。
如何在沒有_id
字段的情況下發布ts課程,還是應該完全不同?