Node.js 安装与使用及连接 MongoDB 的详细教程

news/2024/9/18 20:57:43/ 标签: node.js, mongodb, 数据库

下面我将详细讲解如何安装 Node.js、介绍 Node.js 的脚手架工具、使用 Express 脚手架创建项目,以及如何安装和连接 MongoDB。

一、Node.js 安装

  1. 下载 Node.js:

    • 访问 Node.js 官方网站。

    • 根据你的操作系统选择最新的 LTS(长期支持版)版本下载并安装。一般推荐使用 LTS 版本,因为它更稳定。

  2. 安装 Node.js:

    • 双击下载的安装包,按照提示完成安装。

    • 安装过程中可以选择默认设置,直接点击 "Next" 直到安装完成。

  3. 验证安装:

    • 安装完成后,打开终端(Windows 使用命令提示符或 PowerShell,macOS 和 Linux 使用 Terminal)。

    • 输入以下命令,查看 Node.js 和 npm(Node.js 包管理器)是否安装成功:

node -v
npm -v

二、Node.js 脚手架工具介绍

Node.js 脚手架工具可以帮助开发者快速创建和初始化项目。以下是一些常见的 Node.js 脚手架工具:

  1. Express Generator:

    • 用于快速生成基于 Express 框架的 Node.js 应用程序骨架。

    • 适合搭建 RESTful API 和 Web 应用。

  2. Nest CLI:

    • 用于创建基于 Nest.js 框架的项目,Nest.js 是一个支持 TypeScript 的渐进式 Node.js 框架,适用于构建企业级的服务端应用程序。

  3. Create React App:

    • 虽然这是 React 的脚手架工具,但它是基于 Node.js 的,能够快速搭建 React 前端项目。

  4. Vue CLI:

    • 用于创建 Vue.js 前端项目,同样基于 Node.js。

  5. Angular CLI:

    • 用于创建 Angular 项目,提供了强大的项目生成和管理功能。

三、使用 Express 脚手架创建 Node.js 项目

我们将以 express-generator 为例,介绍如何使用这个脚手架工具创建一个 Node.js 项目。

  1. 全局安装 express-generator
    首先,需要全局安装 express-generator,在终端中运行以下命令:

npm install -g express-generator
  1. 创建 Express 项目:

  2. 在你想要创建项目的目录中,运行以下命令来生成项目:

express myapp --view=pug
  1. 安装依赖:

    • 进入项目目录,并安装项目依赖:

cd myapp
npm install
  1. 启动服务器:

    • 安装完成后,可以运行以下命令启动服务器:

npm start
    • 打开浏览器访问 http://localhost:3000,你应该能看到 Express 默认的欢迎页面。

四、MongoDB 安装

  1. 下载 MongoDB:

    • 访问 MongoDB 官方网站。

    • 选择适合你操作系统的版本并下载。

  2. 安装 MongoDB:

    • 下载完成后,双击安装包并按照安装向导进行操作。通常可以使用默认设置。

    • 安装完成后,MongoDB 会自动作为一个服务运行。

  3. 启动 MongoDB:

    • 如果你是手动启动 MongoDB,可以在终端中输入以下命令:

mongod
    • 这将启动 MongoDB 的守护进程,并且 MongoDB 将开始在默认端口 27017 上运行。

五、Node.js 连接 MongoDB

  1. 安装 mongoose

    • 在你的 Node.js 项目中,安装 mongoose 库来连接和操作 MongoDB:

npm install mongoose

连接 MongoDB:

  • 打开项目的 app.js 文件,并添加以下代码来连接本地的 MongoDB 数据库

const mongoose = require('mongoose');// 连接到 MongoDB
mongoose.connect('mongodb://localhost/mydatabase', {useNewUrlParser: true,useUnifiedTopology: true
});const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {console.log('Connected to MongoDB');
});
    • 这里的 'mongodb://localhost/mydatabase' 是连接字符串,其中 mydatabase 是你要连接的数据库名称。可以替换为你想要使用的数据库名。

  • 创建模型:

    • 在项目的 models 文件夹中创建一个新的 user.js 文件,用于定义一个简单的用户模型:

const mongoose = require('mongoose');const userSchema = new mongoose.Schema({name: String,age: Number
});const User = mongoose.model('User', userSchema);module.exports = User;

在路由中使用模型:

  • 例如,在 routes/index.js 中添加以下代码来保存一个用户到数据库中:

const express = require('express');
const router = express.Router();
const User = require('../models/user');/* GET home page. */
router.get('/', async function(req, res, next) {const user = new User({ name: 'Alice', age: 25 });await user.save();res.send('User saved!');
});module.exports = router;
  1. 测试连接:

    • 重新启动服务器,访问 http://localhost:3000,如果你看到 User saved!,说明你已经成功将 Node.js 与 MongoDB 连接并保存了一个用户到数据库

结论

通过本教程,你已经了解了如何安装 Node.js,了解常见的 Node.js 脚手架工具,使用 Express Generator 创建一个 Node.js 项目,并成功连接到 MongoDB 数据库。你可以在此基础上进一步开发,添加更多的功能,打造完整的应用程序。


http://www.ppmy.cn/news/1518735.html

相关文章

从自动驾驶看无人驾驶叉车的技术落地和应用

摘 要 | 介绍无人驾驶叉车在自动驾驶技术中的应用,分析其关键技术,如环境感知、定位、路径规划等,并讨论机器学习算法和强化学习算法的应用以提高无人叉车的运行效率和准确性。无人叉车在封闭结构化环境、机器学习、有效数据集等方…

参加 帆软 BI 上海城市 课堂(08-30培训)

参加 帆软 BI 城市 课堂(0830): 由于目前是自由职业,也想学习一下新的知识 。所以参加本次的培训,总的来说还是比较专业。 培训在 上海 帆软的总部 环球港进行。时间是 13:30~17:00 老师很专业。学习中 课…

关于前端布局的基础知识

float 横向布局 float 实现横向布局,需要向横着布局的元素添加float 其值left right 存在问题 如果使用float 所在父级五高度,会导致下方的元素上移 top的高度被吞了 解决方法: 给父级元素设置高度:不推荐,需要给父级…

LeetCode第65题 有效数字 结合设计模式:状态模式

思路:有限状态机,结合Java的设计模式:状态模式。 单纯用状态机会有大量的if-else,非常不好看,思路不清晰 用设计模式则非常清楚。但是设计模式是为了给人理解的,对机器而言也可能稍微影响性能; …

IO练习--随机点名

随机点名器1 需求: 有一个文件里面存储了班级同学的信息,每一个信息占一行。 格式为:张三-男-23 要求通过程序实现随机点名器。 运行效果: 第一次运行程序:随机同学姓名1(只显示名字) 第二次运行程序:随机同学姓名2(只显示名字) 第三次运行程序:随机同学姓名3(只显…

【精选】基于Hadoop的用户网站浏览分析的设计与实现(全网最新定制,独一无二)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

2.10鼠标事件

目录 实验原理 实验代码 运行结果 文章参考 实验原理 在 OpenCV 中存在鼠标的操作,比如左键单击、双击等。对于 OpenCV 来讲,用户的鼠标操作被认为发生了一个鼠标事件,需要对这个鼠标事件进行处理,这就是事件的响应。下面我们…

软件设计原则之接口隔离原则

接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计中的一个重要原则,它属于SOLID原则之一。这个原则强调客户端(即接口的调用者)不应该被迫依赖于它们不使用的方法。换句话说,一个类对另一…

centos安装docker并配置加速器

docker安装与卸载: 1、检查当前是否安装docker yum list installed | grep docker2、卸载docker 根据yum list installed | grep docker查询出来的内容,逐个进行删除 yum remove docker.x86 64 -y3、启动与关闭docker 4、删除/etc/docker文件夹 如果…

理解HTTP请求方法:GET、POST、PUT 等

在现代Web开发中,理解不同HTTP请求方法的用途及其特点是至关重要的。每种请求方法都承担着特定的角色,在客户端和服务器之间的通信中发挥着关键作用。包括GET、POST、PUT,以及一些不太常用的方法,如HEAD、DELETE、OPTIONS、TRACE和…

MyBatis之XML配置文件(二)

六、动态SQL拼接 &#xff2d;yBatis提供了if 、foreach、choose等标签动态拼接sql语句&#xff0c;下面介绍这些标签的使用 1、if标签 if标签通常用于WHERE语句中&#xff0c;通过判断参数值决定是否使用某个查询条件。 <select id"selectStudentListLikeName"…

VUE-组件间通信(三)全局事件总线

一、作用&#xff1a;任意组件间通信 二、实现 1、创建全局事件总线 new Vue({render: h > h(App),beforeCreate(){//创建全局事件总线Vue.prototype.$busthis} }).$mount(#app) 2、学生组件 触发事件 <template><div class"studentInfo"><h…

【openwrt-21.02】T750 openwrt-21.02 pptp拨号失败问题分析及解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

Python知识点:如何使用SQLAlchemy进行ORM(对象关系映射)

使用SQLAlchemy进行ORM&#xff08;对象关系映射&#xff09;涉及几个关键步骤。以下是一个详细的指南&#xff0c;帮助你理解并使用SQLAlchemy进行ORM。 1. 安装SQLAlchemy 首先&#xff0c;你需要安装SQLAlchemy。你可以使用pip来安装&#xff1a; pip install sqlalchemy…

【python】数据分析统计

逐行读取’\t’分割的txt 对其中的每个数值都转为六位小数的str 再存入dict 存到excel pip install pandas pip install openpyxl # 用于写入Excel文件import pandas as pd # 假设txt文件的路径是data.txt file_path data.txt # 用于存储数据的字典&#xff0c;假设每…

Java 虚方法表(虚函数)

虚方法表 Java 中的虚方法表&#xff08;Virtual Method Table, VMT&#xff09;是实现动态方法分派和多态的重要机制。它帮助 Java 运行时系统&#xff08;JVM&#xff09;决定在继承体系中调用哪一个方法的具体实现。 什么是虚方法表&#xff1f; 虚方法表是一个类的内部数…

java重点学习

一.redis 穿透无中生有key&#xff0c;布隆过滤nul隔离 锁与非期解难题。缓存击穿过期key&#xff0c; 雪崩大量过期key&#xff0c;过期时间要随机。 面试必考三兄弟&#xff0c;可用限流来保底。 1.1 Redis的使用场景 根据自己简历上的业务进行回答 缓存穿透、击穿、雪崩、双…

sqlsugar 不映射字段,sqlsugar 忽略字段。sqlsugar 字段改名。

sqlsugar 不映射字段&#xff0c;sqlsugar 忽略字段。 利用特性SugarColumn&#xff0c;将IsIgnore设置为True即可&#xff01; [SugarColumn(IsIgnore true)]//sqlsugar 忽略字段 public decimal MaxTemp { get; set; } 这样Sqlsugar 增删改查数据库的时候自动跳过该字段&…

虚幻引擎UE5入坑记

前言 Unreal Engine 和Unity Engine作为目前主流的游戏引擎&#xff0c;各有优缺点。而我目前的工作还是以Unity开发为主&#xff0c;在使用Unity的过程中&#xff0c;总避免不了听到或看到过UE相关的东西&#xff0c;从开始的好奇到后面想要去学习它&#xff0c;但是&#xf…

深度学习基础--模型拟合

模型拟合 损失与网络参数有关&#xff0c;本章着重于探讨如何确定能使损失最小化的参数值。这个过程称为网络参数的学习&#xff0c;或更通俗地说&#xff0c;是模型的训练或拟合。该过程首先是选取一组初始参数值&#xff0c;随后重复执行两个步骤&#xff1a; (i) 计算损失…