Skip to content

NataliaSuarez/learning-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple project to learning node App

My idea is learn without a horizon, just for curious

  • Node v10.16.3 (npm v6.9.0)
  • Express 4.16.4 (casi 420)

Build Setup

# install dependencies
$ npm install

# serve with hot reload at localhost:3000
$ DEBUG=app420:* npm start

# Using nodemon 2.0.4

install global:
$ npm install -g nodemon

Database(UPDATED)

En app.js configurar la base

mongoose.connect(
  'mongodb://user:pass@localhost/app420',
  {
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(db => console.log('Database connected! ;)'))
  .catch(err => console.log(err));

previamente levantar el servicio de mongo. en mi caso usé un docker-compose

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    volumes:
      - ~/.mongo:/var/lib/mongo

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: root

Otra opción sin pass

version: '3.1'

services:
  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    volumes:
      - ~/.mongo:/var/lib/mongo
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081

O levantando las imagenes:

docker run -d -p 27017:27017 -v ~/data:/data/db mongo:3.2

docker run --restart always -d -p 27017:27017 -v ~/data:/data/db mongo:3.2

se levanta con docker-compose up o con -d desde el root ó donde esta el archivo docker-compose.yml

para usar la termina de mongo hay que entrar al contenedor y ejecutar mongo

docker ps: para ver los contenedores levantados

docker exec -it 3kj bash donde 3kj es el hash del contenedor de mongo

mongo admin para ingresar a la base de admin o mongo para entrar a mongo(loggearse como root root, o user y pass segun el docker-compose.yml)

una vez en mongo ir a la base admin

use admin y db para saber qué base estamos usando.

db.auth("root", "root") para loggearse en la base admin como root, desde la consola de mongo. con db.getUser("root") vemos el usuario, con los roles.

use app420 o el nombre de la base que queremos usar con node

db.createUser({ user:"liyos",pwd:"liyos",roles:["readWrite"]}) para crear un usuario para la base quequeremos utilizar.

ejemplo de los comandos que corrí

natalia@nat:~$ docker exec -it 350  bash
root@350a8bbc96f3:/# mongo
MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("429c23c0-a64a-48b0-ba62-b71f6a0f2de8") }
MongoDB server version: 4.2.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
> use admin
switched to db admin
> db
admin
> db.auth("root", "root")
1
> db
admin
> db.getUser("root")
{
	"_id" : "admin.root",
	"userId" : UUID("f42c84c8-d8cf-47ad-86a1-58f2df0130c2"),
	"user" : "root",
	"db" : "admin",
	"roles" : [
		{
			"role" : "root",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}
> use app420
switched to db app420
> db.createUser({ user:"liyos",pwd:"liyos",roles:["readWrite"]})
Successfully added user: { "user" : "liyos", "roles" : [ "readWrite" ] }

About GraphQl

Run server and visit localhost:4000/graphql

You can make querys. Examples:

query getPost($id: String!) {
  post(id: $id) {
    title,
    description,
    content
  }
}
query getPosts {
  posts {
    id,
    title,
    content,
  }
}

with Query variables:

{
  "id": "5f7b223d7c2c7d7f8e8f45e3"
}
mutation createPost {
    createPost(title: "title falopa", description: "descripcion falopa", content: "content falopa") {
        id,
    		title
    }
}

About

Simple project to learn basic concepts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published