sails
Version:
API-driven framework for building realtime apps, using MVC conventions (based on Express and Socket.io)
102 lines (67 loc) • 3.48 kB
Markdown
# `sails console`
Lift your Node.js/Sails.js app in interactive mode, and enter the [REPL](http://nodejs.org/api/repl.html). This means you can access and use all of your models, helpers, configuration, services, and the `sails` app instance. Useful for trying out Waterline queries, quickly managing your data, and checking out your project's runtime configuration.
```usage
sails console
```
By default, this still lifts the server, so your routes will be accessible via HTTP and sockets (e.g. in a browser).
### Usage
`sails console` takes the following options:
* `--dontLift`: start `sails console` without lifting the server
### Example
```text
$ sails console
info: Starting app in interactive mode...
info: Welcome to the Sails console.
info: ( to exit, type <CTRL>+<C> )
sails>
```
### Global variables in `sails console`
Sails exposes [the same global variables](https://sailsjs.com/documentation/reference/Globals) in the REPL as it does in your app code. By default, you have access to the `sails` app instance and your models, as well as any of your other configured globals (for example, lodash (`_`) and async (`async`)).
> **Warning**
>
> In Node versions earlier than v6, using `_` as a variable in the REPL will cause unexpected behavior. As an alternative, simply import the Lodash module as a variable:
>
> ```bash
> sails> var lodash = require('lodash');
> sails> console.log(lodash.range(1, 5));
> ```
### More examples
##### Waterline
The format `Model.action(query).exec(console.log)` console.log is good for seeing the results.
```text
sails> User.create({name: 'Brian', password: 'sailsRules'}).fetch().exec(console.log)
undefined
sails> undefined { name: 'Brian',
password: 'sailsRules',
createdAt: "2014-08-07T04:29:21.447Z",
updatedAt: "2014-08-07T04:29:21.447Z",
id: 1 }
```
It inserts it into the database, which is pretty cool. However, you might be noticing the `undefined` and `null`—don't worry about those. Remember that the .exec() returns errors and data for values, so `.exec(console.log)` has the same effect as `.exec(console.log(err, data))`. The second method will remove the undefined message, but add null on a new line. Whether you want to type more is up to you.
> Note that starting with Node 6, an object’s constructor name is displayed next to it in the console. For example, when using the [`sails-mysql` adapter](https://sailsjs.com/documentation/concepts/extending-sails/adapters/available-adapters#?sailsmysql), the `create` query mentioned above would output:
>
> ```text
> sails> undefined RowDataPacket { name: 'Brian',
> password: 'sailsRules',
> createdAt: "2014-08-07T04:29:21.447Z",
> updatedAt: "2014-08-07T04:29:21.447Z",
> id: 1 }
> ```
##### Exposing Sails
In `sails console`, type `sails` to view a list of Sails properties. You can use this to learn more about Sails, override properties, or check to see if you disabled globals.
```text
sails> sails
|> [a lifted Sails app on port 1337]
\___/ For help, see: https://sailsjs.com/documentation/concepts/
Tip: Use `sails.config` to access your app's runtime configuration.
1 Models:
User
1 Controllers:
UserController
20 Hooks:
moduleloader,logger,request,orm,views,blueprints,responses,controllers,sockets,p
ubsub,policies,services,csrf,cors,i18n,userconfig,session,grunt,http,projecthooks
sails>
```
<docmeta name="displayName" value="sails console">
<docmeta name="pageType" value="command">