我有一个看起来像的函数:
module.exports = myFunction() {
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)
我可以使用其他文件很好地访问它 var myFunction = require(.thepath.js)
但是,我如何从它创建的文件中访问它。
我试过了myFunction(),this.myFunction()但都不起作用。
谢谢
假设我有一些接口:
export interface MyDocument {
id: string,
collection: string[];
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个新的(以及将现有类型转换为该类型):
const workingDocument = <MyDocument>document;
最后,我有这个 if 语句块来检查它是否真的包含我在该接口中指定的所有内容:
if (!workingDocument.id) {
throw new Error("Document missing `id`");
} else if (!workingDocument.collection) {
throw new Error("Document missing `collection` array");
}
Run Code Online (Sandbox Code Playgroud)
但是我似乎不喜欢这样,因为 if 语句可以永远增长并且不太好维护。
有没有更好的办法?
谢谢。
我正从JUnit转到TestNG.
我的类已经有一个构造函数,所以我按要求添加了一个零参数构造函数,现在我注意到@RunWith正在使用org.junit.runner.
我认为我需要注释掉import org.junit.runner.RunWith;但是我需要使用的TestNG等价物是什么?
谢谢.
我正在使用express和node.js构建一个api。
我正在进行基本验证,并希望验证传入的项目是否存在且安全(除了在客户端进行验证之外还完成)。
所以我有以下内容:
router.post('/register', function(req, res) {
for (var itemsFromBody in req.body){
console.log(itemsFromBody);
}
Run Code Online (Sandbox Code Playgroud)
然而,当我检查控制台时,我看到的只是键的名称,例如用户名、电子邮件等,而不是值本身。
我如何获得这些?
另外,我将对这些进行验证,例如确保其不为空 - 我是否需要遵循简单的 if-then 语句,或者是否存在一些不错的 npm 包允许我进行验证?
谢谢!
更新:下面的当前解决方案。
我要在我的网站上添加Facebook登录-我希望这很简单,但事实证明很困难。
(内置:Node.js / Express API和Angular前端)
因此,我恳请您提供帮助:
1-代替successRedirect返回令牌
我passport-facebook用来帮助登录过程,但是在回调而不是successRedirect中,我可以说返回一些包含令牌的json。请注意,令牌是一个JWT令牌,我已经在标准电子邮件身份验证中使用了该令牌,目前我在passport.serializeUser:
passport.serializeUser(function(user, done) {
var token = ///implementation for token
done(null, user);
});
Run Code Online (Sandbox Code Playgroud)
然后在回调中执行类似的操作:
router.get('/login/facebook/callback',
passport.authenticate('facebook', {
res.json({success: true, token:token)
})
);
Run Code Online (Sandbox Code Playgroud)
2-客户端如何处理
然后我无法理解的第二点是如果我返回令牌,那么在我的客户端,我将以一种通常的$http.get方法“挑选”该令牌。但是URL流将如何工作-通过这个,我的意思是我有一个“使用Facebook登录”按钮,然后调用服务器端router.get('/login/facebook',该服务器端重定向到Facebook登录页面,因此一旦完成并返回令牌,它将如何知道回到首页。
希望我上面的问题有意义-对Angular来说是新来的,所以请原谅我,如果不清楚,我会尽力解释。
解决方案(如果我做的不好的事情,请让我知道您的想法)因此,经过更多的思考,我使用以下方法解决了这个问题:
1-在回调中,我做了一个新的API获取路由。然后,我在URL中发送用户ID以创建我的自定义JWT令牌:
router.get('/login/facebook/callback',
passport.authenticate('facebook',
{ session: false, failureRedirect: "/processfblogin/false" }),
function(req, res) {
res.redirect("/api/processfblogin/" + req.user._id);
}
);
Run Code Online (Sandbox Code Playgroud)
然后从这里我制作令牌并发送URL。
这就是它变得有趣的地方。理想情况下,我想使用$httpget,但是COR一直给我一个302。因此,最终我将令牌附加为URL参数,并将其发送为:
res.redirect('http://localhost:3000/#/fbToProcess/' + token);
Run Code Online (Sandbox Code Playgroud)
然后,我用自己的控制器制作了该页面,该控制器仅获取令牌,将其保存并在身份验证页面上点击了所有内容。
我将继续寻找一种在json响应中发送令牌的方法,以便用户无需进入这个新的空白页面,但是在此之前它是可行的:-)
我正在使用 Minikube 在 Kubernetes 上运行 Ruby 应用程序。
但是,每当我查看日志时,我都看不到在本地运行应用程序时会在终端中看到的输出。
我想是因为它只显示 stderr?
如何查看所有类型的控制台日志(例如 fromputs或raise)?
环顾四周,这是否与它处于分离模式有关 - 请参阅 Python 相关问题:未显示 Kubernetes Pod 中的日志
谢谢。
=
根据要求 - 这是 deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: sample
spec:
replicas: 1
template:
metadata:
labels:
app: sample
spec:
containers:
- name: sample
image: someregistry
imagePullPolicy: Always
command: ["/bin/sh","-c"]
args: ["bundle exec rake sample:default --trace"]
envFrom:
- configMapRef:
name: sample
- secretRef:
name: sample
ports:
- containerPort: 3000
imagePullSecrets:
- name: regsecret
Run Code Online (Sandbox Code Playgroud) 查看官方的 Ruby 镜像 Docker 页面- 该示例显示了如何设置WORKDIR /usr/src/app.
有谁知道为什么这个特定的路径?
也就是说,可以将我的应用程序放在根目录下,或者换句话说,忽略 WORKDIR 吗?我知道它是根据文档推荐的,但我在不创建目录时遇到了一些问题。
只是想确保丢弃它没有问题。我以其他方式测试了我的图像,它按预期工作。
谢谢。
我正在考虑使用 Joi 进行 api 验证。
我似乎无法确认我的架构是否正确,因为我希望需要电子邮件或手机(但它们都不能为空/不存在) - 以下是否正确?
var schemaForRegistration = Joi.object().keys({
email: Joi.string().email(),
mobile:Joi.number().integer()
}).without('email', 'mobile');
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用node.js构建我的第一个API,并且想知道我是否需要确保每个响应都发送状态代码,或者只是使用布尔值就可以了.
对安全性或其他事情至关重要吗?
所以代码明智:
return res.status(403).send({ message: 'No token provided.' });
Run Code Online (Sandbox Code Playgroud)
与
return res.json({ success: false, message: 'No token provided.' });
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在尝试编写一个接口来处理这样的数据:
interface SessionList {
appInfo: Object(string: string | null);
}
Run Code Online (Sandbox Code Playgroud)
appInfo 下可能有 0 到多个项目。我试图找到正确的语法但不是运气 - 目前在:
appInfo: Object(string: string | null);
有任何想法吗?
javascript ×4
node.js ×4
ruby ×2
typescript ×2
angularjs ×1
api-design ×1
docker ×1
express ×1
facebook ×1
http ×1
interface ×1
joi ×1
junit ×1
kubernetes ×1
minikube ×1
passport.js ×1
testng ×1