Post Top Ad

Your Ad Spot

lunes, 29 de junio de 2020

Nodo MongoDB Nativo

En este tutorial veremos cómo crear una aplicación simple para rastrear acciones en una lista de observación o cartera. Para almacenar estos datos, utilizaremos MongoDB, una popular solución de almacenamiento NoSQL que a menudo se usa con Node.js. Veremos cómo crear la estructura de directorios para contener esta aplicación de lista de seguimiento de acciones, y luego instalar MongoDB Native usando npm para guardarla como una dependencia del archivo package.json. Una vez que todo esté en su lugar, veremos cómo conectarse a Mongo e insertar un nuevo stock en nuestra lista de observación. Discutiremos un poco sobre ObjectId y cómo funciona en Mongo, y luego terminaremos con la obtención de documentos, el recuento de documentos, la actualización de documentos y su eliminación.

Crear directorio y Package.json

Primero, crearemos un directorio simple para contener todo nuestro código y crearemos un archivo package.json usando npm init.
nodo $ mkdir stock-app
nodo $ cd stock-app
stock-app $ npm init
Esta utilidad lo guiará a través de la creación de un archivo package.json.
Solo cubre los elementos más comunes e intenta adivinar valores predeterminados razonables.

Consulte la npm help jsondocumentación definitiva sobre estos campos.
y exactamente lo que hacen.

Use después para instalar un paquete ynpm install 
guárdelo como una dependencia en el archivo package.json.

Presione ^ C en cualquier momento para salir.
nombre del paquete: (stock-app)
versión: (1.0.0)
descripción: Simple Stock Watchlist
punto de entrada: (index.js)
comando de prueba:
repositorio git:
palabras clave:
autor:
licencia: (ISC)
A punto de escribir en C: \ node \ stock-app \ package.json:

{
  "name": "stock-app",
  "versión": "1.0.0",
  "description": "Simple Stock Watchlist",
  "main": "index.js",
  "guiones": {
    "prueba": "echo \" Error: no se especificó ninguna prueba \ "&& salida 1"
  },
  "autor": "",
  "licencia": "ISC"
}


¿Esta bien? (si)
stock-app $

Instalar MongoDB Native

Ahora tenemos un archivo package.json, y podemos instalar el paquete nativo de MongoDB de esta manera.
stock-app $ npm install mongodb --save
El aviso npm creó un archivo de bloqueo como package-lock.json. Debe confirmar este archivo.npm WARN stock-app@1.0.0 Sin campo de repositorio.

+ mongodb@3.1.1
agregó 7 paquetes de 5 contribuyentes y auditó 7 paquetes en 3.009s
encontrado 0 vulnerabilidades
Cuando eso se complete, tendrá un nuevo archivo package.json en el directorio que se verá así.

Conexión a MongoDB usando MongoClient

Vamos a poner los archivos específicos de nuestra base de datos en un directorio dedicado llamado databaseLo sé, muy original.
nuevo directorio de base de datos
En este nuevo directorio, podemos crear un archivo JavaScript llamado mongodb-connect.js .
mongodb-connect js file
En este archivo, agreguemos el siguiente código JavaScript.
Antes de ejecutar este fragmento, asegúrese de tener MongoDB instalado y ejecutándose en su máquina. Mientras eso se verifique, podemos cd en esa carpeta de base de datos y simplemente ejecutar el archivo.
base de datos stock-app $ cd
base de datos $ node mongodb-connect.js (nodo: 14560) DeprecationWarning: el analizador de cadenas de URL actual está en desuso, y wi
se eliminará en una versión futura. Para usar el nuevo analizador, pase la opción {useNewUr
lParser: true} a MongoClient.connect.
Conectado a MongoDB
Interesante. Parece que nos conectamos, sin embargo, también vemos esa advertencia de desaprobación. Una búsqueda rápida en Stack Overflow indica que podemos actualizar el código así, lo que aclara el error.

Insertar registro en la colección usando MongoDB Native

Ahora intentemos insertar un documento en la colección. Estamos representando agregar un ticker de stock a una lista de observación aquí. La función insertOne () se utiliza para completar esta tarea.
Una vez más podemos ejecutar este archivo y ver el resultado. Dado que estamos obteniendo una instancia del nuevo Stock, y no un error, parece que todo salió bien.
base de datos $ nodo mongodb-connect.js
Conectado a MongoDB [{
    "ticker": "AAPL", "inPortfolio": falso,
    "_id": "5b55f32bbcbb001890cdb254"
  }
]
También podemos usar Mongo Compass para verificar los resultados.
mongo insertone resultado en brújula
Ver el nuevo documento usando Compass también se ve bien.

El ObjectId

Cuando insertamos un nuevo documento en Mongo, observe el campo _id que recuperamos como parte de nuestro resultado. No especificamos ese valor, Mongo lo creó para nosotros.
"_id": "5b55f32bbcbb001890cdb254"
Como con la mayoría de los sistemas de bases de datos, hay un identificador único para cualquier dato en la base de datos. En Mongo, ese es el ObjectId. ObjectId * no * es un entero de incremento automático como se ve a menudo en los sistemas basados ​​en SQL. Mongo usa una identificación generada aleatoriamente. Una razón para esto es que, como un sistema grande se escala, no es necesario verificar primero cuál es la identificación de incremento automático más grande antes de insertar un nuevo documento. Mongo solo genera una nueva identificación aleatoria y desaparece. El ObjectId en sí es un valor de 12 bytes con los primeros 4 bytes como una marca de tiempo. Esta es la razón por la cual no hay un campo created_at como se ve en los sistemas basados ​​en SQL. Los siguientes 3 bytes son un identificador de máquina. Luego hay 2 bytes para representar la identificación del proceso. Los últimos 3 bytes son un contador. Todos estos trabajan juntos para crear ese valor aleatorio. Aprender más acerca deObjectId en los documentos si tienes curiosidad.

Obteniendo datos usando MongoDB Native

Ahora podemos comenzar a buscar algunos datos de Mongo. Podemos agregar un nuevo archivo en nuestro directorio de base de datos para esto. Lo llamaremos database-fetch.js .
archivo de búsqueda de base de datos js
Insertamos algunas acciones más en nuestra base de datos detrás de escena para que podamos demostrar la función find (). ToArray () aquí.
Cuando ejecutamos el archivo database-fetch.js , vemos la siguiente matriz de resultados. Es una matriz de tres objetos, cada uno con propiedades únicas _id, ticker e inPortfolio.
database $ node database-fetch.js
Conectado a MongoDB
Cepo
[
  {
    "_id": "5b55f32bbcbb001890cdb254",
    "ticker": "AAPL",
    "inPortfolio": falso
  },
  {
    "_id": "5b55f90ed81f3928c0423f41",
    "ticker": "MSFT",
    "inPortfolio": verdadero
  },
  {
    "_id": "5b55f925330ad628406bcab3",
    "ticker": "NFLX",
    "inPortfolio": falso
  },
  {
    "_id": "5b55f9575e8bc54238453153",
    "ticker": "MDB",
    "inPortfolio": verdadero
  }
]
La consulta anterior puede representar todas las existencias en una lista de observación. Sin embargo, tal vez queremos ver solo aquellos que están en su cartera. Es posible que esté viendo cuatro acciones, pero en realidad solo ha comprado dos para su cartera. Podemos modificar la consulta así para que sea más granular.
Ahora, cuando ejecutamos el archivo, podemos ver que la consulta solo devuelve acciones donde la propiedad inPortfolio está establecida en true. Por lo tanto, parece que actualmente tenemos Microsoft y Mongodb Inc en nuestra cartera.
database $ node database-fetch.js
Conectado a MongoDB
Cepo
[
  {
    "_id": "5b55f90ed81f3928c0423f41",
    "ticker": "MSFT",
    "inPortfolio": verdadero
  },
  {
    "_id": "5b55f9575e8bc54238453153",
    "ticker": "MDB",
    "inPortfolio": verdadero
  }
]

Contando documentos en la colección

Si desea consultar el número de documentos en una colección, puede hacerlo como vemos a continuación. En nuestro caso, esto nos muestra todas las existencias en nuestra lista de observación, ya sea que las hayamos comprado o no.
Aquí está el resultado de esa consulta. Justo lo que esperaríamos.
database $ node database-fetch.js
Conectado a MongoDB
Recuento de existencias: 4

Eliminar documentos usando MongoDB Native

Pasando a eliminar la funcionalidad, podemos crear un nuevo archivo llamado mongodb-delete.js en nuestro directorio de base de datos.
mongodeb eliminar js
Imaginemos que queremos eliminar simplemente cualquier acción en nuestra lista de vigilancia que no esté en nuestra cartera. Podemos usar la función deleteMany () para hacer precisamente eso.
Podemos ejecutar el archivo JavaScript y obtenemos el resultado a continuación. En realidad, hemos omitido una gran parte de la salida, ya que lo único que realmente nos importa es que n = 2 y ok = 1. Esto significa que se efectuaron (eliminaron) dos documentos y el resultado salió bien (funcionó).
base de datos $ nodo mongodb-delete.js
Conectado a MongoDB
CommandResult {
  resultado: {n: 2, ok: 1}
Lo que eso significa para nosotros es que Apple y Netflix ya no están en nuestra lista de observación. Ahora solo tenemos Microsoft y Mongo Inc.
Quizás queremos vender nuestras acciones de Microsoft para eliminarlas tanto de nuestra lista de vigilancia como de nuestra cartera. Podemos hacer eso con deleteOne () .
La ejecución del archivo muestra que se eliminó 1 documento y todo salió bien.
base de datos $ nodo mongodb-delete.js
Conectado a MongoDB
CommandResult {
  resultado: {n: 1, ok: 1}
Veamos lo que tenemos en la base de datos ahora usando Compass. Parece que las acciones de MDB son las últimas acciones que poseemos.
ver documentos en la brújula
Resulta que necesitamos acceso a algunos fondos, por lo que tendremos que vender MDB para recuperar nuestro capital. Esta vez usaremos findOneAndDelete () así.
Cuando ejecutamos el programa, vemos que se eliminó MDB y ahora no tenemos existencias en nuestra lista de observación o cartera.
base de datos $ nodo mongodb-delete.js
Conectado a MongoDB
{lastErrorObject: {n: 1},
  valor:
   {_id: 5b55f9575e8bc54238453153,
     ticker: 'MDB',
     inPortfolio: verdadero},
  ok: 1}

Actualización de documentos con MongoDB Native

Por último, podemos ver cómo actualizar documentos en MongoDB. Sin embargo, es posible que vea un problema. No tenemos más acciones en nuestra lista de observación o cartera. Agreguemos un grupo en un barrido usando insertMany ().
Genial, todas esas acciones están de vuelta en la lista de observación y cartera. Ahora queremos actualizar la cartera. Agreguemos un nuevo archivo al proyecto llamado mongodb-update.js .
mongodb-update js stock-app
La función que usaremos en esta sección es findOneAndUpdate () . En este escenario, queremos eliminar a Microsoft de nuestra cartera, pero mantenerlo en nuestra lista de observación. Eso significa que necesitamos encontrar MSFT y establecer que su propiedad en Portafolio sea falsa.
Ejecutar el archivo mongodb-update.js nos da esta respuesta.
base de datos $ nodo mongodb-update.js
Conectado a MongoDB
{lastErrorObject: {n: 1, updatedExisting: true},
  valor:
   {_id: 5b561c1c480b624574e1c6a2,
     ticker: 'MSFT',
     inPortfolio: falso},
  ok: 1}
Parece que hizo el truco. Veamos también en Compass.
resultado findOneAndUpdate

Nodo Resumen nativo de MongoDB

Eso lo concluye con nuestro tutorial sobre el uso de MongoDB Native con Node.js. Muchas veces usaremos un ORM dedicado como Mongoose para este tipo de trabajo, pero como hemos visto en este tutorial, también se puede hacer con MongoDB Native de la misma manera.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas