javascript - 如何在 mongodb 中获取用户 id 并在 jwt 中使用它?
问题描述
TypeError:无法读取未定义的属性“_id”
collection.insertOne({username: username, password: password}).then((err, user) => {
const payload = user._id
jwt.sign(payload, 'aspect', (err, token) => {
console.log(token)
})
})
解决方案
InsertOne
有 3 个可能的签名:
insertOne(docs: Object, callback: MongoCallback<InsertOneWriteOpResult>): void;
insertOne(docs: Object, options?: CollectionInsertOneOptions): Promise<InsertOneWriteOpResult>;
insertOne(docs: Object, options: CollectionInsertOneOptions, callback: MongoCallback<InsertOneWriteOpResult>): void;
您正在使用 Promise 签名,因为您没有提供回调函数。
所以返回值是InsertOneWriteOpResult
,看起来怎么样?
{
insertedCount: number;
ops: Array<any>;
insertedId: ObjectID;
connection: any;
result: { ok: number; n: number };
}
这意味着您需要将代码更改为首先只有 1 个输入用于承诺解析,然后再使用insertedId
而不是_id
,如下所示:
collection.insertOne({username: username, password: password}).then((userInsertResult) => {
const payload = userInsertResult.insertedId
jwt.sign(payload, 'aspect', (err, token) => {
console.log(token)
})
})
推荐阅读
- html - 点击事件问题Jquery后关闭汉堡菜单
- vba - Application.ShowWindowsInTaskbar 在 Word 365 中给出“运行时错误 4609 字符串太长”。它是否已弃用?
- reactjs - 想要在部署后禁用源
- java - 如何在 Spring 中使用容器管理的 EntityManager 重用(本机)JPA 查询
- r - 一些箱线图改进
- arrays - SAS 存储值临时数组
- php - 是否可以对输出 JSON 数组元素求和并将其存储在数组中?
- primefaces - 来自 p:dataTable 的 SortBy 不适用于 dataModel
- python-3.x - google-cloud-datastore 的安装卡在 grpcio
- docker - Airflow DockerOperator - 在正在运行的 docker 容器中运行脚本