gpt4 book ai didi

javascript - 如何编写 typescript 方法来复制 javascript 方法

转载 作者:行者123 更新时间:2023-11-30 12:05:54 25 4
gpt4 key购买 nike

我在 javascript 中有这段代码:

// find the user
User.findOne({
name: req.body.name
}, function(err, user) {

if (err) throw err;

if (!user) {
res.json({ success: false, message: 'Authentication failed. User not found.' });
} else if (user) {

//issue token
}

})

User.findOne 为 Mongoose 而来。但我想模拟那个方法,所以我不会在这一点上与数据库交谈。但是想要保持逻辑原样,所以我需要编写自己的 User.findOne typescript 模拟,所以行为相同。

这就是我到目前为止的想法:

export class User { 

constructor() { }

public findOne(user: any, next:Function) {
console.log(1); //getting there
var fake = {name: "a", password: "p"};

return fake;
}
}

我正在像那样导入我的代码

import {User} from '../mock/User'; 

var login = {name: req.body.name, password: req.body.password} //fake

// find the user
User.prototype.findOne({
user: login
}, function(err, user) {
console.log(2); //not getting there when using my User.findOne from .ts
........
}

但是 function(err, user) 后面的代码没有被执行。

您有解决办法吗?

更新:刚刚尝试使用 lambdas 但仍然是同样的问题:

User.findOne({user: login}, (err, user) => {
console.log("test"); //- this code inside function just not executed
})

最佳答案

如果您希望直接从 User 类而不是从实例调用该方法,则需要将其声明为静态。

public static findOne(user: any, next:Function) {
console.log(1); //getting there
var fake = {name: "a", password: "p"};
next(undefined,fake); //this will call the function you passed as lambda or regular function
}

这样你就可以像这样调用方法。

User.findOne({},(error,result)=>{
//using a lambda here to make sure you have no issues with 'this' but you can also pass a regular function object.
console.log(result);
console.log(error);
}

关于javascript - 如何编写 typescript 方法来复制 javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35252164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com