我试图将同一应用程序中的不同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
答案 0 :(得分:0)
不幸的是,您无法使用JS SDK来做到这一点。 JS SDK不支持多个应用程序,因为它的某些方法(例如Parse.initialize()
)是静态的。因此,初始化中的任何更改都会对SDK产生全局影响。
如果您需要从客户端连接到其他应用程序,则必须直接使用REST API或GraphQL 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