Couchbase travel Sample Flight Booking Error

I have set up couchbase server 5 (with a fresh travel-sample bucket), sync gateway 1.5, the python web backend on my mac 10.13 , couchbase lite 2, xcode 9

The travel sample app loads, and i can search and select flights. But cannot book a flight. i Get the following error message.

I am looking for a way to fix this problem. Can anyone contribute an idea or has anyone had this problem and solved it?

Did you create the “demo” user via the Travel Sample web frontend?

FYI, It’s generally better to type the text of the error instead of posting a screenshot. It’s faster and lets other people search on the error message to find this thread.

The error is “Flight booking error! The operation couldn’t be completed. TravelSample.TravelSampleError error 1”

Are any error/warning messages logged to the console?

yes i did create a user : demo:password to match what is in the sync gateway config listed below

{
“interface”:":4984",
“log”: [""],
“databases”: {
“travel-sample”: {
“import_docs”: “continuous”,
“unsupported”: {
“enable_extended_attributes”: true,
“replicator_2”:true
},
“bucket”:“travel-sample”,
“server”: “http://localhost:8091”,
“username”: “admin”,
“password”: “password”,
“users”:{
“demo”: {“password”: “password”, “admin_channels”: ["
"], “channels” : “all”},
“peter”: {“password”: “password”, “admin_channels”: ["*"], “channels” : “all”}

  },
"sync": `

function sync(doc, oldDoc) {

/* Just ignore all the static travel-sample files /
var type = getType();
if (type == “landmark” || type == “hotel” || type == “airport” || type ==“airline” || type == “route”) {
return;
}
/
validation */
var username = getUserName();
// Verify the user making the request is the same as the one in doc’s username
requireUser(doc.username);

if (!isDelete()) {
// Validate required fields.
validateNotEmpty(“username”, doc.username);

  if (isCreate()) {

    // Validate that the _id is prefixed by owner.
    var expectedDocId = "user" + "::" + doc.username;

    if (expectedDocId != doc._id) {
        throw({forbidden: "user doc Id must be of form user:userId"});
 
    }
  
  } else {
     // Validate that the username hasn't changed.
    validateReadOnly("username", doc.username, oldDoc.username);
  }

}

/* Routing */
// Add doc to the user’s channel.
channel(“channel.” + username);

// Give user read access to channel
if (!isDelete()) {
// Deletion of user document is essentially deletion of user
access(username,“channel.” + username)
}

function getType() {
return (isDelete() ? oldDoc.type : doc.type);
}

function getUserName() {
return (isDelete() ? oldDoc.username : doc.username);
}

function isCreate() {
// Checking false for the Admin UI to work
return ((oldDoc == false) || (oldDoc == null || oldDoc._deleted) && !isDelete());
}

function isUpdate() {
return (!isCreate() && !isDelete());
}

function isDelete() {
return (doc._deleted == true);
}

function validateNotEmpty(key, value) {
if (!value) {
throw({forbidden: key + " is not provided."});
}
}

function validateReadOnly(name, value, oldValue) {
if (value != oldValue) {
throw({forbidden: name + " is read-only."});
}
}

}
`
}
}
}

Hey thanks for getting back to me :slight_smile:

Oh OK sure i will post text instead of screen shots

the messages logged to the console in xcode from a simple case of logging in and setting outbound and inbound flights are as follows:

2017-12-06 09:21:39.744782+1100 TravelSample[1505:110377] [MC] Lazy loading NSBundle MobileCoreServices.framework
2017-12-06 09:21:39.745749+1100 TravelSample[1505:110377] [MC] Loaded MobileCoreServices.framework
2017-12-06 09:21:39.758840+1100 TravelSample[1505:110377] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/markmansfield/Library/Developer/CoreSimulator/Devices/3B6F00E4-5D12-4A7E-AD4A-89284C46FDB5/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2017-12-06 09:21:41.196599+1100 TravelSample[1505:110377] [MC] Reading from private effective user settings.
WIll open/create DB at path /Users/markmansfield/Library/Developer/CoreSimulator/Devices/3B6F00E4-5D12-4A7E-AD4A-89284C46FDB5/data/Containers/Data/Application/9A0D1681-86A5-4561-B4BD-2F76008D7B49/Library/Application Support/demo
2017-12-06 09:21:47.287789+1100 TravelSample[1505:110377] CouchbaseLite default log level is Verbose and above
startPushAndPullReplicationForCurrentUser()
2017-12-06 09:21:47.327515+1100 TravelSample[1505:110494] <CBLHTTPLogic: 0x60c000282c10>: Auth challenge; credential = <NSURLCredential: 0x60c000009dd0>: demo
2017-12-06 09:21:47.335622+1100 TravelSample[1505:110494] [] nw_connection_fillout_tcp_statistics 2 Connection is not ready
2017-12-06 09:21:47.335802+1100 TravelSample[1505:110494] [] tcp_connection_get_statistics Failed to get statistics from connection
PushPull Replicator: 0/0, error: nil, activity = connecting
PushPull Replicator: 0/0, error: nil, activity = busy
fetchBookingsForCurrentUser(observeChanges:)
updateUIWithUpdatedBookings(_:error:)
PushPull Replicator: 0/0, error: nil, activity = idle
2017-12-06 09:21:51.920634+1100 TravelSample[1505:110377] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don’t want.
Try this:
(1) look at each constraint and try to figure out which you don’t expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x60400028aff0 UITextField:0x7fea55a4fe00.width == 169 (active)>",
"<NSLayoutConstraint:0x60400028c670 H:|-(9)-[UILabel:0x7fea54e34370’Flying from’] (active, names: ‘|’:UIView:0x7fea54e320b0 )>",
"<NSLayoutConstraint:0x60400028c6c0 UITextField:0x7fea55810000.leading == UILabel:0x7fea54e34370’Flying from’.leading (active)>",
"<NSLayoutConstraint:0x60400028c8a0 UILabel:0x7fea54e34090’Departing’.leading == UITextField:0x7fea55810000.leading (active)>",
"<NSLayoutConstraint:0x60400028c8f0 UITextField:0x7fea55a4fe00.leading == UILabel:0x7fea54e34090’Departing’.leading (active)>",
"<NSLayoutConstraint:0x60400028c940 H:[UITextField:0x7fea55a4fe00]-(197)-| (active, names: ‘|’:UIView:0x7fea54e320b0 )>",
"<NSLayoutConstraint:0x60400028d250 UIView:0x7fea54e320b0.leading == UIView:0x7fea54e31ed0.leadingMargin - 16 (active)>",
"<NSLayoutConstraint:0x60400028d2a0 UIView:0x7fea54e31ed0.trailingMargin == UIView:0x7fea54e320b0.trailing - 16 (active)>",
"<NSLayoutConstraint:0x60000029b1c0 ‘UIView-Encapsulated-Layout-Width’ UIView:0x7fea54e31ed0.width == 375 (active)>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x60400028aff0 UITextField:0x7fea55a4fe00.width == 169 (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
detachPresentingView
2017-12-06 09:22:14.504401+1100 TravelSample[1505:110377] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don’t want.
Try this:
(1) look at each constraint and try to figure out which you don’t expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x60400028c5d0 UIView:0x7fea54e320b0.height == 165 (active)>",
"<NSLayoutConstraint:0x60400028d1b0 UIView:0x7fea54e31ed0.topMargin == UIView:0x7fea54e320b0.top (active)>",
"<NSLayoutConstraint:0x60400028d200 UIView:0x7fea54e31ed0.bottomMargin == UIView:0x7fea54e320b0.bottom (active)>",
"<NSLayoutConstraint:0x60000029b210 ‘UIView-Encapsulated-Layout-Height’ UIView:0x7fea54e31ed0.height == 250 (active)>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x60400028c5d0 UIView:0x7fea54e320b0.height == 165 (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
onUpdatedSearchCriteria(:destination:)
fetchBookingsForCurrentUser(observeChanges:)
updateUIWithUpdatedBookings(
:error:)

sync gatewway console dump - sorry it is a bit long

###########################

Last login: Wed Dec 6 09:06:55 on ttys000
marks-iMac:~ markmansfield$ source /Users/markmansfield/try-cb-python/bin/activate
(try-cb-python) marks-iMac:~ markmansfield$ python /Users/markmansfield/try-cb-python/travel.py

Connecting to: couchbase://localhost/travel-sample?username=admin

  • Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
    127.0.0.1 - - [06/Dec/2017 09:14:11] “GET / HTTP/1.1” 302 -
    127.0.0.1 - - [06/Dec/2017 09:14:12] “GET /static/index.html HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:12] “GET /static/scripts.d8e378c19cb5877923a4.bundle.js HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:12] “GET /static/main.c28cb6b3bb97ebeca6f9.bundle.js HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:12] “GET /static/styles.dc426660899080b3991a.bundle.js HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:12] “GET /static/inline.js HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:13] “GET /static/assets/CBTravel.LOGO.png HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:13] “GET /static/assets/poweredBy.01.png HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:13] “GET /static/448c34a56d699c29117adc64c43affeb.woff2 HTTP/1.1” 304 -
    127.0.0.1 - - [06/Dec/2017 09:14:13] “GET /static/favicon.ico HTTP/1.1” 404 -
    127.0.0.1 - - [06/Dec/2017 09:14:32] “GET / HTTP/1.1” 302 -
    127.0.0.1 - - [06/Dec/2017 09:14:44] “POST /api/user/signup HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:14:47] “GET /api/user/demo/flights HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:14:52] “GET /api/airports?search=sfo HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:14:55] “GET /api/airports?search=dtw HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:15:10] “GET /api/flightPaths/Detroit%20Metro%20Wayne%20Co/San%20Francisco%20Intl?leave=04/19/2017 HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:15:10] “GET /api/flightPaths/San%20Francisco%20Intl/Detroit%20Metro%20Wayne%20Co?leave=04/12/2017 HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:15:21] “POST /api/user/demo/flights HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:15:22] “POST /api/user/demo/flights HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:15:26] “GET /api/user/demo/flights HTTP/1.1” 200 -
    [2017-12-06 09:19:39,136] ERROR in app: Exception on /api/flightPaths/San Francisco Intl/dtw [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 116, in findall
    for x in flightpathlist if ‘toAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:19:39] “GET /api/flightPaths/San%20Francisco%20Intl%2Fdtw?leave=04/13/2017 HTTP/1.1” 500 -
    [2017-12-06 09:19:42,814] ERROR in app: Exception on /api/flightPaths/San Francisco Intl/dtw [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 116, in findall
    for x in flightpathlist if ‘toAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:19:42] “GET /api/flightPaths/San%20Francisco%20Intl%2Fdtw?leave=04/13/2017 HTTP/1.1” 500 -
    [2017-12-06 09:19:47,488] ERROR in app: Exception on /api/flightPaths/dtw/San Francisco Intl [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 118, in findall
    for x in flightpathlist if ‘fromAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:19:47] “GET /api/flightPaths/dtw%2FSan%20Francisco%20Intl?leave=04/20/2017 HTTP/1.1” 500 -
    [2017-12-06 09:19:48,716] ERROR in app: Exception on /api/flightPaths/San Francisco Intl/dtw [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 116, in findall
    for x in flightpathlist if ‘toAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:19:48] “GET /api/flightPaths/San%20Francisco%20Intl%2Fdtw?leave=04/13/2017 HTTP/1.1” 500 -
    [2017-12-06 09:20:07,006] ERROR in app: Exception on /api/flightPaths/San Francisco Intl/dtw [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 116, in findall
    for x in flightpathlist if ‘toAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:20:07] “GET /api/flightPaths/San%20Francisco%20Intl%2Fdtw?leave=02/13/2017 HTTP/1.1” 500 -
    [2017-12-06 09:20:27,756] ERROR in app: Exception on /api/flightPaths/San Francisco Intl/dtw [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 116, in findall
    for x in flightpathlist if ‘toAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:20:27] “GET /api/flightPaths/San%20Francisco%20Intl%2Fdtw?leave=02/13/2017 HTTP/1.1” 500 -
    127.0.0.1 - - [06/Dec/2017 09:20:27] “GET /favicon.ico HTTP/1.1” 404 -
    [2017-12-06 09:21:15,106] ERROR in app: Exception on /api/flightPaths/San Francisco Intl/dtw [GET]
    Traceback (most recent call last):
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1982, in wsgi_app
    response = self.full_dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1612, in full_dispatch_request
    rv = self.dispatch_request()
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask/app.py”, line 1598, in dispatch_request
    return self.view_functionsrule.endpoint
    File “/Users/markmansfield/try-cb-python/lib/python2.7/site-packages/flask_classy.py”, line 200, in proxy
    response = view(**request.view_args)
    File “/Users/markmansfield/try-cb-python/travel.py”, line 116, in findall
    for x in flightpathlist if ‘toAirport’ in x)
    StopIteration
    127.0.0.1 - - [06/Dec/2017 09:21:15] “GET /api/flightPaths/San%20Francisco%20Intl%2Fdtw?leave=04/12/2017 HTTP/1.1” 500 -
    127.0.0.1 - - [06/Dec/2017 09:22:21] “GET /api/flightPaths/San%20Francisco%20Intl%2FDetroit%20Metro%20Wayne%20Co?leave=04/12/2017 HTTP/1.1” 200 -
    127.0.0.1 - - [06/Dec/2017 09:22:25] “GET /api/flightPaths/Detroit%20Metro%20Wayne%20Co%2FSan%20Francisco%20Intl?leave=04/19/2017 HTTP/1.1” 200 -

######################################

hmm… Not sure if its a formatting glitch with the JSON config that you have shared . Some stuff isn’t rendering properly.

Please launch SGW with JSON config that is provided with the sample app.
Specifically,

"demo": {"password": "password"},

  • The error code that you have in the alert corresponds to the case when “UserNotFound” which means there was some error fetching the user document from the server .

  • Check if that the user::demo document is on the couchbase server as discussed in the Try It out section.

  • If confirmed, Can you log out of the app and log back in again with “demo”/ “password” ? I want to ensure that the user was created before you logged in through the app.

  • Finally, if the above does not work, please share the Xcode console logs.

Hi Priya thanks for getting back to me again your suggestions worked!

I started sync gateway again with the original SG config file from git hub, and then through the web app created the demo user with correct password, verified that it was in the couch base bucket. Then i started the mobile up and logged in using demo:password . I noticed that if i had no flights booked through the web app then i was not able to book a flight through the mobile app, but if i did have flights booked through the web app , i would see them in the mobile app and was also able to make bookings .

I am curious are the following cases expected behaviour?

  1. no previous bookings in web app = unable to make a booking on mobile app

  2. logging in through mobile app without creating a user through the web app will result in error 401

Those 2 cases have me confused and it would be great to get more clarity about them
cheers mark

Glad you have it working .

  • You should be able to make a booking via mobile app even when you make no bookings via the web app. Note that the web app won’t auto refresh, you will have to go out and go back to bookings screen. Check the document in the Couchbase Server bucket to see if updates come through.
  • Well, That shouldn’t happen. You would see the error that were seeing earlier with UserNotFound. . Unless the demo credentials specified don’t match what is in the JSON config file because the replicator is authenticated with the user credentials.