node.js - 在客户端和服务器 Mongoose 模型之间共享 typescript 接口(interface)

标签 node.js mongodb angular typescript mongoose

我试图在客户端代码和服务器代码之间共享一些基本接口(interface)。我在使用接口(interface)在 Mongoose 中创建数据模型时遇到问题。

我遇到的问题是如何访问客户端中的 document._id 属性。我无法在不导致编译错误的情况下将 _id 添加到用户界面,而且我无法在不声明的情况下访问 _id。

我的项目布局:

/src
-/client
--/user.service.ts
-/server
--/models
---/user.model.ts
-/common
--/common.d.ts

用户服务.ts

import { User } from 'common'

 deleteUser(user: User): Promise<User> {
   return this.http.delete( 'http://someurl/api/users' + user._id )
     .toPromise()
     .then( resp => resp.json().data as User )
     .catch( err => this.errorHandler(err) );
 }

用户.模型.ts

import { model, Schema, Document } from 'mongoose';
import { User } from 'common';

let UserSchema = new Schema {
  firstName: String,
  lastName: String,
  email: String
}

export interface UserDocument extends User, Document { }

export var UserModel:Model<UserDocument> = model<UserDocument>('Users', UserSchema);

common.d.ts

declare module 'common' {
  export interface User {
    firstName: string;
    lastName: string;
    email: string;
  }
}

感谢帮助

最佳答案

您可以将 _id 声明为可选:

export interface User {
    _id?: string;
    firstName: string;
    lastName: string;
    email: string;
}

或者您可以为具有 id 的用户设置另一个界面:

export interface PersistedUser extends User {
    _id: string;
}

并在需要时转换到它。

关于node.js - 在客户端和服务器 Mongoose 模型之间共享 typescript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41909207/

相关文章:

javascript - 使用 JS 和 NodeJS 上传文件 post 请求

node.js - 连接到 Mongoose 并将其与函数一起使用

angular - 将两个指令合并为一个指令

mysql - MongoDB 与 MySQL 5.5 相比?

javascript - 单击“喜欢”按钮时,它应该显示特定数据吗?

angular - Angular 中 Istanbul 尔覆盖率报告中的标记异常

javascript - 在 html 中使用 node.js

javascript - 访问 Promise 中的 URL

javascript - Twilio 追踪电话状态

MongoDB嵌套对象聚合求和排序