发布没有“_id”字段的 TypeScript 对象?
Posted
技术标签:
【中文标题】发布没有“_id”字段的 TypeScript 对象?【英文标题】:Post TypeScript Object without '_id' field? 【发布时间】:2017-01-27 06:31:48 【问题描述】:我使用 Express、Mongoose 和 Angular 2 (TypeScript) 制作网络应用程序。现在我想发布一个没有任何_id
字段的MyClass
实例。
在 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);
然后我收到如下截图所示的错误:
其中表示我发回的对象有一个空的_id
字段。
如何发布没有 _id
字段的 ts 类,还是应该完全不同?
【问题讨论】:
【参考方案1】:由于没有人给出答案,我上网找到了一个很好的例子,说明如何实现 Angular2 -- Mongoose -- Express 系统。
https://github.com/moizKachwala/Angular2-express-mongoose-gulp-node-typescript
官方教程中原始英雄应用程序的一个很好的例子。虽然它基于 RC1,但它为如何正确执行 RESTFUL 请求提供了一个很好的起点。
希望这对正在寻找类似答案的人有所帮助。
【讨论】:
以上是关于发布没有“_id”字段的 TypeScript 对象?的主要内容,如果未能解决你的问题,请参考以下文章
(节点:17348)UnhandledPromiseRejectionWarning:MongoError:对路径“_id”执行更新将修改不可变字段“_id”