Zen*_*Zen 6 mongodb typescript
考虑一个简单的用户集合:
// db.ts
export interface User {
      _id: mongodb.ObjectId;
      username: string;
      password: string;
      somethingElse: string;
}
// user.ts
import {User} from "../db"
router.get("/:id", async (req, res) => {
    const id = req.params.id;
    // user._id is a mongodb.Object.
    const user: User = await db.getUser(id);
    res.send(user);
});
// index.ts
// code that will runs on browser
import {User} from "../../db"
$.get('/user/...').done((user: User) => {
    // user._id is string.
    console.log(user._id);
});
直到我要在客户端代码中使用此接口之前,它都可以正常工作。因为_id当从服务器作为json传输时,用户的成为十六进制字符串。如果我设置_id为mongodb.ObjectId | string,则行为会变得很奇怪。

您可以尝试以巧妙的方式将它们分开:
interface User {
   username: string;
   password: string;
   somethingElse: string;
}
export interface UserJSON extends User {
   _id : string
}
export interface UserDB extends User {
   _id : mongodb.ObjectId
}
然后使用 UserJSON(客户端)或 UserDB(服务器端)。
| 归档时间: | 
 | 
| 查看次数: | 2855 次 | 
| 最近记录: |