我可以将客户端连接到多个解析服务器吗?

时间:2019-07-19 07:38:05

标签: javascript parse-server

我试图将同一应用程序中的不同React组件连接到多个解析服务器,但我只能连接到一个解析服务器。

App.js是父组件,而App2.js是子组件。

我已经启动了2个解析服务器,每个解析服务器运行在不同的端口上。

解析服务器A在端口1330、1331(实时查询)上运行,而另一个服务器B在端口1337、1338(实时查询)上运行。 我尝试将App.js连接到A,将App2.js连接到B,但是App2.js仍然连接到A。

是否可以将App2.js同时连接到服务器A和服务器B?

in App.js:

import { Parse as UserParse } from "parse";
UserParse.initialize("APP_ID");
UserParse.serverURL = "http://localhost:1330/parse";
UserParse.liveQueryServerURL = "ws://localhost:1331/";

in App2.js:

import {Parse as DataParse } from "parse";
DataParse.initialize("APPLICATION_ID")
DataParse.serverURL = "http://localhost:1337/parse"
DataParse.liveQueryServerURL = "ws://localhost:1338/"

遇到错误:

RESTController.js:205 POST http://localhost:1337/parse/classes/400(错误请求)

未捕获(承诺)错误:RESTController.js的会话令牌无效:319

2 个答案:

答案 0 :(得分:0)

不幸的是,您无法使用JS SDK来做到这一点。 JS SDK不支持多个应用程序,因为它的某些方法(例如Parse.initialize())是静态的。因此,初始化中的任何更改都会对SDK产生全局影响。

如果您需要从客户端连接到其他应用程序,则必须直接使用REST APIGraphQL API,而无需使用JS SDK(或将SDK用于一个应用程序和另一个应用的API之一)。

答案 1 :(得分:0)

我想出了这个initializeMulti函数,似乎可以完成这项工作:

  var Parse = require('parse/node')

  Parse.initializeMulti = (appId, javascriptKey, masterKey) => {
      Object.keys(require.cache).forEach(function(key) { delete require.cache[key] })
      var _Parse = require('parse/node')
      _Parse.initialize( appId, javascriptKey, masterKey )
      return _Parse
  }

  Parse.foo = Parse.initializeMulti('foo','foo','foo')
  Parse.foo.serverURL = 'http://localhost/foo'

  Parse.bar = Parse.initializeMulti('bar','bar','bar')
  Parse.bar.serverURL = 'http://localhost/bar'

  console.dir( Parse.foo.CoreManager.get('APPLICATION_ID') )   // foo
  console.dir( Parse.bar.CoreManager.get('APPLICATION_ID') )   // bar