我对使用 GraphQL 设置 current_user 有点困惑。因此,我在 Restful 应用程序中完成此操作的方法是让用户控制器在创建用户时登录用户,如下所示
def create
@user = User.new(user_params)
if @user.save
login(@user)
render :show
else
render json: @user.errors.messages, status: 422
end
end
Run Code Online (Sandbox Code Playgroud)
我在应用程序控制器中有登录(用户)方法,它的作用基本上是将用户设置为 current_user helper_method 并分配一个会话令牌,如下所示
protect_from_forgery with: :exception
helper_method :current_user
def login(user)
@current_user = user
session[:session_token] = user.reset_session_token!
end
def logout
current_user.reset_session_token!
session[:session_token] = nil
end
def logged_in?
!!current_user
end
def current_user
@current_user ||= User.find_by(session_token: session[:session_token])
end
Run Code Online (Sandbox Code Playgroud)
我想我真正的问题是我应该如何让 current_user 出现在我的 GraphQL 控制器上下文中?我正在使用“graphql”gem,它为我创建了一个 graphQL 控制器,但仍然困惑我应该如何实现它。当创建新用户时,其输出是
[["username", "elyy"], ["email", "kelly@kelly.com"], ["password_digest", "$2a$10$ATfHgklNx0bED7N9JCQfHuHjNF/sJ5AcwkOzMOqX7sPLdgAREcHd6"], ["created_at", "2018-10-21 01:46:06.913393"], ["updated_at", "2018-10-21 01:46:06.913393"], …Run Code Online (Sandbox Code Playgroud) 因此,我过去从未在我的所有项目中实际实施过任何测试,并决定开始在我正在开发的新项目中实施它。作为一个完全的初学者,我对得到的输出有点困惑。
当我使用邮递员时。它不会返回 500 错误,而是将信息保存到后端。运行测试时遇到的错误是
1) POST /users
Creates a new user:
Error: expected 200 "OK", got 500 "Internal Server Error"
Run Code Online (Sandbox Code Playgroud)
我还将展示我的代码是什么样子,以便希望找出我出错的地方。
// 测试
var express = require("express");
var request = require("supertest");
var app = express();
let router = require("../../server/routes/api/users");
app.use(router);
describe("GET /test", function() {
it("Returns a json for testing", function(done) {
request(app)
.get("/test")
.set("Accept", "application/json")
.expect("Content-Type", /json/)
.expect(200, done);
});
});
describe("POST /users", () => {
let data = {
name: "dummy",
email: "dummy@dummy.com",
password: 123456
};
it("Creates a new …Run Code Online (Sandbox Code Playgroud) 我是 PHP 新手,希望人们能帮助我获得更好的见解。我正在尝试解决我在 JS 到 PHP 中遇到的问题,以更好地理解语法,但遇到了这个错误:
PHP 致命错误:未捕获的 TypeError:传递给 Serializer::serializeArray() 的参数 1 必须是数组类型,给定 null,在 /leetcode/precomiled/serializer.php 中调用
这是我的代码。我希望有人能告诉我我做错了什么,以便更好地理解并避免进一步的 PHP 错误。感谢所有回答的人。
class Solution {
function twoSum($nums, $target) {
$collection = array();
foreach($nums as $key => $num) {
$subtracted = $target - $num;
if ($collection[$subtracted]) {
return array($collection[$subtracted], $key);
} else {
$collection[$num] = $key;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)