小编phi*_*hil的帖子

使用React Native/Redux和Firebase保持身份验证

我有一个相当简单的React native/Redux应用程序,并且最近添加了Redux persist with AsyncStorage以帮助在重新加载时继承状态.

但是,我在让Firebase重新验证用户时遇到问题.我想知道是否有人有经验,因为我对Redux和Firebase都很新.为了更清楚,我希望用户登录一次,然后每次打开应用程序时都不再登录.

我的登录用户操作:

export const loginUser = ({ email, password }) => {
  return (dispatch) => {

    dispatch({ type: LOGIN_USER });

    firebase.auth().signInWithEmailAndPassword(email, password)
      .then(user => loginUserSuccess(dispatch, user))
      .catch(() => {
        firebase.auth().createUserWithEmailAndPassword(email, password)
          .then(user => loginUserSuccess(dispatch, user))
          .catch(() => loginUserFail(dispatch));
      });
  };
};
Run Code Online (Sandbox Code Playgroud)

我的App.js:

    class App extends Component {

    constructor() {
      super();
      this.state = {
        rehydrated: false,
        store
      };
    }

  componentDidMount() {

    const persistor = persistStore(
      store,
      {
        storage: AsyncStorage,
        whitelist: ['auth']
      },
      () => { this.setState({ …
Run Code Online (Sandbox Code Playgroud)

firebase react-native firebase-authentication redux

8
推荐指数
1
解决办法
2109
查看次数

删除Ecto中的关联(对于多对多)

我有一个用户和程序模型,它具有多对多关联.他们成功创建关联,因此用户有许多程序(反之亦然),但现在我需要删除关联(但不删除用户或程序)

我在ProgramController中有一个函数关联它们,如下所示:

# Myapp.ProgramController

def associate_user(conn, _params) do
   %{"_csrf_token" => _csrf_token,"_method"=>_method,"_utf8" => _utf8,"id" => id, "user" => %{"email" => email}} = _params
   {pid, _} = Integer.parse(id)

   user = Repo.get_by(User, email: email) |> Repo.preload(:programs)
   program = Repo.get_by(Program, id: pid) |> Repo.preload(:users)

   pid_list = user.programs
   |> Enum.map(fn x -> x.id end)
   |> List.insert_at(0, program.id)

   changeset_list = from(program in Myapp.Program, where: program.id in ^pid_list)
   |> Repo.all
   |> Enum.map(&Ecto.Changeset.change/1)

   from(user in User, where: user.email == ^user.email, preload: [:programs, :role])
   |> Repo.one
   |> …
Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

5
推荐指数
1
解决办法
3089
查看次数

动画增长箭头链接

开始

结束

嗨,我想知道如何像上面那样对 svg 箭头进行动画处理(悬停时)。

我尝试过使用 CSS 变换,但它们也会缩放箭头,这不好。我认为正确的方法是使用 SVG 动画,但我不知道从哪里开始。例如,我将使以下箭头(仅线)增长,箭头相应地移动。

<svg width="600px" height="100px">
  <defs>
    <marker id="arrow" markerWidth="10" markerHeight="10" refX="0" refY="3" orient="auto" markerUnits="strokeWidth">
      <path d="M0,0 L0,6 L9,3 z" fill="#f00" />
    </marker>
  </defs>

  <line x1="50" y1="50" x2="100" y2="50" stroke="#000" stroke-width="5"     marker-end="url(#arrow)" />
</svg>
Run Code Online (Sandbox Code Playgroud)

很感谢任何形式的帮助!

css svg svg-animate

4
推荐指数
1
解决办法
6051
查看次数

在 Elixir 中编写 Ecto 查询

我从客户端传入的参数列表中创建了一个查询列表:

[
  #Ecto.Query<from v in Video, where: v.brand == ^"Cocacola">,
  #Ecto.Query<from v in Video, where: v.type == ^"can">
]
Run Code Online (Sandbox Code Playgroud)

但是,我需要遍历此列表并编写一个查询,该查询是所有查询的累加......(下一个查询的输入是当前查询等。)

有人能指出我如何做到这一点的正确方向。这将不胜感激!

我知道我可以一一撰写查询。但是我从客户端获取参数并且有一长串字段(品牌、类型等),并且不想对每个字段进行单独的查询。

elixir ecto phoenix-framework

4
推荐指数
1
解决办法
736
查看次数

在Elixir中将相同键上的两个映射组合在一起

我对Elixir很陌生,只想找到将两张地图组合在一起的最佳方法.更具体:

name_map = %{
  105 => "Jim",
  48 => "Maria",
  62 => "Karen",
  888 => "Foo"
}

job_map = %{
  105 => "Social worker",
  48 => "Programmer",
  62 => "Teacher",
  999 => "Bar"
}
Run Code Online (Sandbox Code Playgroud)

我想要得到

combined_map = %{
  105 => %{"name" => "Jim", "job" => "Social worker"},
  48 => %{"name" => "Maria", "job" => "Programmer"},
  62 => %{"name" => "Karen", "job" => "Teacher"},
  888 => %{job: nil, name: "Foo"},
  999 => %{job: "Bar", name: nil}}
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

elixir

2
推荐指数
2
解决办法
2034
查看次数

在 Firebase 中更新密钥

我一直在浏览文档,但我没有看到更新特定键值的方法(同时保留其余键)。实现这一目标的唯一方法是获取现有数据并使用 set() 覆盖它吗?

我有这样的事情:

firebase.database()
  .ref(`/users/${currentUser.uid}/products/${productKey}`)
    .set({category: name});
Run Code Online (Sandbox Code Playgroud)

其中产品有许多其他键值对,并且使用 set() 覆盖整个对象,在这种情况下这不是我想要的。

我感谢任何帮助!

javascript firebase firebase-realtime-database

0
推荐指数
1
解决办法
1502
查看次数