如何在我的react-native项目中重用现有的API(mongo + passport-local)?

时间:2016-05-02 00:15:22

标签: mongodb reactjs react-native redux

我已经使用了一段时间的现有API(node + mongo + passport-local)。我有Users模型和Posts模型。使用邮递员,我可以注册,登录,创建/编辑/删除帖子。

Users模型包含useridusernamedisplayname,当然还有护照自动加密/哈希的密码。

Posts模型包含postiduseridtitletextcreationdate

我想在我的react-native应用程序中使用这个现有的设置。所以,如果我在localhost:9000或其他东西上运行此API,并且我想在其上注册用户以及登录用户发布的任何新帖子,那可能吗?

我希望使用redux来管理我的用户状态。用户对象将初始化为null,因此如果为null,则显示登录页面。暂时忽略注册,因此如果用户输入用户名/密码并点击提交,则会触发userLogin操作,使用用户名/密码发送到localhost:9000/login的POST,然后我收到回复,这会给我用户名并显示名称。用户对象已更新,并且由于它存在,用户将被路由到主应用程序页面。

我一直在尝试了解反应原生应用程序的用户身份验证,但到目前为止我发现的内容非常令人困惑。我尝试使用解析但在花了2个小时之后无法让它工作,说实话,我甚至不理解它。我只是想能够使用我的本地API并在本地测试。

由于

1 个答案:

答案 0 :(得分:2)

你可以使用fetch来做' GET'和' POST'要求。用户名和密码进入正文对象。例如:

fetch('http://localhost:9000/login, {
      method: 'POST',
      crossOrigin: true,
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        email: email,
        password: pw
      })
}).then((r) => {r.json()})
.then((result) => {... do something with the result})

由于fetch返回一个promise,你会得到'然后'言。

根据回复,您可以更新商店中的状态以登录'我们已退出'。