Message:

Subscribe rss
Blog categories

In the previous feature highlight I described how to manually create data tables in Backendless console. In this post I will show how to setup a data table schema. A table schema in Backendless is a collection of table columns. Each column may have the following attributes:

  • Column name – identifies the column in the table and becomes a property in the objects saved in the table.
  • Data type – determines the type of data which can be stored in the corresponding object property. Available data types are: string (up to 500 characters), text (up to 3000 characters), datetime, integer, double, boolean.
  • Default value – when an object is stored and the property does not contain a value, Backendless assigns and stores the specified default value.
  • Validator – validates data in the property using either a built-in or custom (regular expression validator).

To access the schema editor tool:

  1. Login to Backendless console, select your app and click the Data icon.
  2. Select the table you would like to edit the schema for and click the Table Schema and Permissions button in the upper right corner of the interface.
  3. Once you are in the schema editor tool (which is identified by the Edit Schema menu), you can inspect the existing table columns or add new ones.
  4. To add a column, click the Add Column button. You will see the following popup:
    add column popup - Feature 8: Create data table schema in Backendless console
  5. Enter a name for the column and select the data type. If you are not sure about the default value or the validator, ignore those fields for now – we will be reviewing them in future posts.
  6. Click Save to create the column.

Schema management includes a lot more tasks than just creating table columns. In the future posts we will be reviewing the following:

  • Configuring validators.
  • Configuring default values.
  • Renaming/deleting columns and relationships.
  • Creating relationships with other data tables.
  • Creating relationships with Geopoints.

As we are progressing with the feature a day blog series, I thought it would be a good idea to come up with a fictional app which I could use in the feature posts. The idea for the app I will use as an example is a restaurant ordering system. Using the app a customer (who would need to register and login) can choose a restaurant, browse the menu and submit an order. A restaurant owner would be able to login and see the orders. Additionally, the owner would be able to run a report to calculate daily revenue. The design for the app will be evolving as we go, however to start with something I put together a class diagram which shows the core entities present in the system:restaurant model - Building a restaurant app using Backendless

There are plenty of things we can add to the application. I can think of restaurant/menu recommendations, customer reviews, integration with payment systems, etc. This should be fun!

The article which shows how to store objects in Backendless also demonstrated dynamic data table creation. That approach is called “code first” – where the code dictates the database schema. However, a more traditional approach where you create the tables first and then write code which works with them is also supported by our platform. Creating data tables in Backendless is trivially simple. Please follow the instructions below:

  1. Login to Backendless console, select an app and click the Data icon.
  2. Locate and click the “plus” button in the lower left corner of the user interface:
    create data table - Feature 7: Creating data tables to store objects in console
  3. Enter the name of the table in the popup. A name cannot start with a number and cannot contain spaces or special characters. Click Save to create the table.
    table name popup - Feature 7: Creating data tables to store objects in console
  4. Once a table is created, the console will ask you if you would like to define table’s schema. Schema management will be discussed in one of the future posts.

Enjoy!

This post continues the series on the Backendless User service. Previously we covered user registration API, delivery of the welcome email upon the registrationlogin API,  and the ability to enable/disable user accounts. The feature highlighted in this post focuses on changing user’s password in the Backendless console. There are several ways to change the password, including using the API or by requesting password recovery. The approach reviewed here is reserved strictly for the administrator/developer of the application. To change user’s password in console, follow the steps below:

  1. Login to console, select an app and click the Data icon.
  2. The Users table should be selected by default. Make sure you’re viewing the contents of the Users table and find the user for whom you need to change the password.
  3. Locate the password column. The contents will appear blank for the reason that console never shows user’s passwords.
  4. Click the password cell for the user’s account and type the new password. Press Enter to finalize the password submission. The password becomes effective immediately. changing user password - Feature 6: Changing user's password by administrator

Now that you know how to register and login users for your application, you might be wondering what degree of control over your user accounts you have with Backendless. As a developer of a Backendless-powered app, the console is the ultimate tool where you can control all aspects of your app. There many features in the Backendless console (and this series will describe all of them), but this post focuses on the feature that lets you enable or disable users. To experience the feature you need to have at least one user registered with the application. You can create a user by running the code from this example. Once you have a registered user, follow the instructions below:

  1. Login to console, select and app and click the Data icon.
  2. The Users table should be selected by default. The table shows all the users registered with your application.
  3. Find the user which should be disabled (or enabled) and locate the userStatus column. The cells in the column contain a drop-down box with the Enabled and Disabled values.
  4. To change the user status, make a selection in the drop-down box. Once a user’s account is disabled, he will not be able to log in and any API operations executed on behalf of the user will be immediately suspended.

The image below shows the userStatus column and the pencil icon to save the change as described above:
enable disable user - Feature 5: Enable or disable users of your mobile application

The feature 2 in this series (registering app users using Backendless API) talks about how to create user accounts. If your application uses the user registration API, odds are you will need to use the Login API as well. The API is rather trivial – it requires two parameters: a value which uniquely identifies the user and his password.

Continue reading

In the previous post (Feature 2: Registering App Users with the API), I described an API to register users for your application. When user registration successfully completes, a welcome email is delivered to the user’s email address. The default content and formatting of the email is shown below. As you can see, it is a template:
default email - Feature 3: Delivering a customizable welcome email when a user registers for your app

Continue reading

We’re continuing our “Blog a Feature a Day” series. In this post I will review the user registration API (see the API documentation for Android, iOS, JavaScriptREST). The User Registration API is likely one of the first APIs you work with when you start with Backendless. The API handles the process of registering a user with an application so he can login and use the application.

Continue reading

This is the first post in the “Blog a Feature a Day” series we’re starting today. In this post I will show how to save an object with relations in Backendless. I am using the “code first” approach, which means I will not be creating data tables in the backend. Instead the code will dictate to the backend what the data schema should look like. The example demonstrating the feature consists of two classes: Order  and OrderItem . An instance of the Order  class may contain a collection of OrderItem  objects. The example will create an order, populate it with order items and save the order on the server. As a result, Backendless will create data tables corresponding to the classes used in the examples and you will be able to see the data.

Continue reading

apple heart health 300x300 - Backendless API CookbookHow feature-rich is Backendless? Well, it has a ton of features (which means if the features were measured as kilos in the metric system, we would have 1000 of them). Can you name all of them? Can we? Well, that’s what I am challenging myself and the rest of the company to find out. Starting today we’re going to write a blog post every day describing a feature. Since today is the 7th day of the year, we have exactly 358 days left, which means if stick to the challenge, there will be 358 features written about by the time 2016 rolls in.

The features we will write about will be picked semi-randomly. The topics can be influenced by the questions we get on the Backendless support forum, releases we do or any requests we get from you. Please write to us or simply post a comment to any of the feature-a-day posts.

User Service

Feature 2: Registering app users with the User Registration API
Feature 3: Delivering a customizable welcome email when a user registers for your app
Feature 4: User login API – login registered users to a Backendless app
Feature 5: Enable or disable users of your mobile application
Feature 6: Changing user’s password by administrator
Feature 81: Changing user’s password via API (if user can login)
Feature 106: Changing user’s password via API, if user cannot login (Free Plan)
Feature 108: Changing user’s password via API, if user cannot login (Paid Plan)
Feature 107: Customize the ‘forgot password’ email message
Feature 10: Require email confirmation for user registration
Feature 19: Handling user logins with the same user credentials
Feature 38: Dynamic user definition with the Registration API
Feature 43: Required user properties for user registrations
Feature 45: Updating user account using User Service API
Feature 52: Fetching application’s user objects
Feature 53: Disable user registrations with a single click
Feature 55: Registering/Updating a user with related data object(s)
Feature 64: Registering app users manually using Backendless Console
Feature 80: Deleting users with API or console
Feature 84:  Customizable messages for email address confirmation (upon user registration)
Feature 89:  User logout API – logout current user from a Backendless app
Feature 83:  Support for customizable session timeouts
Feature 104: Validate user properties with regular expressions

Security

Feature 20: Developer-defined roles – an essential block to securing your app data
Feature 23: Block access to all data for the “guest” users
Feature 27: Securing access to a data table for a security role
Feature 42: Assigning roles to users using management console
Feature 44: Lockout user account upon unsuccessful logins
Feature 60: Loading data objects which belong to the logged in user (Owner Policy)
Feature 76: Restricting access to files using Backendless Console
Feature 85:  Geography-based restrictions for your app
Feature 87: Manage data object’s access control list (ACL) in console
Feature 88: Managing object’s ACL using API

Data Service

Management Console

Feature 7: Creating data tables to store objects in console
Feature 8: Create data table schema in management console
Feature 9: Adding data objects using developer console
Feature 11: Declaring relations between tables (classes) using developer console
Feature 12: Creating relationships between objects using developer console
Feature 13: Create data tables, columns and relations by importing CSV files
Feature 14: SQL-based search for data objects using console
Feature 26: Encoding SQL search queries in console for use by REST clients
Feature 37: Display dates in the data objects in the GMT0 timezone
Feature 54: Validating data object properties with regular expressions
Feature 71: Assigning column types during data import
Feature 77: Using Backendless REST Console to fetch your data
Feature 91: Configuring default value for a data table column
Feature 99: Declaring a relationship between a data table and geo point(s)
Feature 100: Creating relationships between data objects and geo points

API

Feature 1: Saving Objects with Relations and Dynamic Schema Creation
Feature 16: Data retrieval API – how to load objects from an mBaaS storage
Feature 17: Data Paging API  how to efficiently load large data sets in a mobile app
Feature 21: Loading related data objects – the ‘auto-load’ approach
Feature 22: Loading related data objects – the ‘one-step/dynamic’ approach
Feature 28: Loading related data objects – the ‘two-step’ approach
Feature 47: Loading data objects from server with sorting
Feature 92: Loading first object from a data table using API
Feature 93: Loading last object from a data table using API
Feature 59: Recursive object references in persistence objects
Feature 90: Retrieving database/table schema using API
Feature 94: Deleting persistent objects using Data Service API
Feature 95: Updating data objects using API
Feature 96: Declare minimum required properties in your data classes
Feature 97: Update object’s related collections using API
Feature 98: Loading data objects from server with an SQL query
Feature 101: Loading data objects with related geo points using API
Feature 103: Search data objects by distance from a location

Geo Service

Feature 24: Setting up sample geo-location data (geolocation introduction)
Feature 25: Retrieving geo points for a category
Feature 32: Saving a Geo Point with API
Feature 36: Saving a data object with a related geo location
Feature 39: Adding geo points with related data objects
Feature 50: Importing geo location data from CSV files
Feature 51: Partial match geo point search
Feature 56: Searching for geo points in a radius
Feature 57: Searching for geo points in a rectangular area
Feature 68: Using SQL queries for geo point searches
Feature 69: Cross-category search in geo service

File Service and Backendless Hosting

Feature 30: Backendless File Browser – one place for all file management tasks
Feature 31: Uploading files to server with the File Upload API
Feature 33: Mapping a domain name to your Backendless file storage
Feature 40: Enabling git support for your Backendless file storage
Feature 41: Compress any directory in your Backendless file storage using console
Feature 46: Creating new files in file storage using console’s online text editor
Feature 63: Cross domain access control for browser-based apps
Feature 67: Creating directories in Backendless File Storage
Feature 75: Obtaining file’s public URL for files in File Storage
Feature 102: Downloading files from Backendless file hosting

Messaging Service

Feature 34: Sending email from your mobile, browser or desktop app
Feature 65: Basic publish/subscribe messaging
Feature 66: Send pub/sub messages from Backendless console
Feature 72: Message selectors or conditional delivery in pub/sub messaging
Feature 73: Conditional message delivery with subtopics

Custom Business Logic

Feature 105: Custom business logic (overview)

Utility APIs

Management APIs

Productivity Tools and Features
Posted in Feature-a-Day