Mongoose .save() 未保存到数据库?

2024-04-12

我的 Mongoose .save 方法有问题。数据库永远不会被创建,数据也不会被保存,并且不会抛出任何错误。我已经用尽了谷歌和 stackoverflow 寻找类似的建议,但没有运气,所以将其开放给任何可以帮助我的人!

我的 POST 请求是通过以下方式发出的:

export function registerUser({ email }) {
  return function(dispatch) {
    axios.post(`${API_URL}/auth/register`, { email })
    .then(response => {
      dispatch({ type: AUTH_USER });
    })
    .catch((error) => {
      errorHandler(dispatch, error.response, AUTH_ERROR)
    });
  }
}

我发出了几个 POST 请求,并且都通过服务器配置从 API 获取了成功状态:{'database': 'mongodb://localhost/practicedb', 'port': process.env.PORT || 3000},但数据永远不会被保存,并且数据库(practicedb)不会显示在终端上。

使用 Mongoose 架构 (user.js):

var UserSchema = new Schema({
  email: {
    type: String,
    lowercase: true,
    unique: true,
    required: true
  },
})

API控制器

它接收电子邮件字符串 POST 请求,然后如果文本字段中未输入任何内容,则会发回 422 错误,并在内部User.findOne,如果电子邮件已存在于数据库中,则抛出 422 错误,如果不存在,则抛出user.save将其保存在数据库中。但是 .save 无法正常工作,并且数据库甚至没有创建。

"use strict";

const User = require('../models/user')

exports.register = function(req, res, next) {
  const email = req.body.email;

  if(!email) {
    return res.status(422).send({ error: 'You must enter an email address.'})
  }

  User.findOne({ email: email }, function(err, existingUser) {
    if(err) { return next(err); }

    if(existingUser) {
      return res.status(422).send({ error: 'That email address is already in use.'})
    }
    let user = new User({
      email: email,
    })
    user.save(function(err, user) {
      if(err) { return next(err); }
      res.status(201).json({
        user: user,
      })
    })
  })
}

EDIT

我尝试为 API 控制器进行更广泛的控制台日志记录,一旦触发,看起来它不会执行任何操作并跳到末尾,但随后它会恢复并进入 User.findOne 和 user.save 内部,但看起来像 user .save 不起作用。

难道是服务器没有正确连接数据库?有没有办法确定是否正在使用 MongoDB 方法?

也尝试过快速记录:

服务器的设置方式如下:

const express = require('express'),
      app = express(),
      logger = require('morgan'),
      config = require('./config/main'),
      mongoose = require('mongoose'),
      bodyParser = require('body-parser'),
      router = require('./router');

mongoose.Promise = global.Promise;
mongoose.connect(config.database);

const server = app.listen(config.port);
console.log('Your server is running on port ' + config.port + '.');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logger('dev'));

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:8080");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials");
  res.header("Access-Control-Allow-Credentials", "true");
  next();
})

router(app);

EDIT 2


我实际上花了最后 4 个小时试图找出为什么 .save() 不起作用。结果我的家庭IP地址改变了,无法访问数据库。 ARGH

无论如何......这是我诊断问题的方法:

Do console.log(mongoose.connection.readyState)

该代码将返回数据库状态。如果返回的话1这意味着您已连接。如果返回的话0这意味着您尚未连接。请参阅此答案以获取完整列表 https://stackoverflow.com/a/19606067/11993942

如果返回的话0您可以尝试将您的 IP 地址列入白名单(假设您使用的是 MongoDB Atlas):

  1. 转到 MongoDB Atlas 仪表板。
  2. Go to Network Access安全保障下
  3. Hit Add IP Address
  4. 添加您当前的 IP 地址
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose .save() 未保存到数据库? 的相关文章

随机推荐

  • 类方法和实例方法同名

    我想做这样的事情 class X classmethod def id cls return cls name def id self return self class name 现在打电话id 对于类或其实例 gt gt gt X id
  • 如何在 Tensorflow 中设置损失操作的名称?

    在 Tensorflow 中 我可以为操作和张量指定名称 以便稍后检索它们 例如在一个函数中我可以做 input layer tf placeholder tf float32 shape None 300 name input layer
  • “FOR”在cmd批处理文件中如何工作?

    20 年来我一直在使用数十种语言进行编程 但无论我如何努力 我始终无法理解 Windows cmd shell 批处理文件中的 FOR 是如何工作的 我读 http www ss64 com nt for html http www ss6
  • 在Access表中插入自增主键

    我们在 Access 数据库中有一个巨大的表 有超过 500k 条记录 并且没有 PK 是否可以将自动递增主键列插入到已经存在的 Access 表中 是的 它是并且可以通过编辑表并添加自动增量类型字段来非常简单地完成 唯一的规则是每个表只能
  • D3 中的堆叠变换

    我有一个已应用变换的 SVG 元素 这可以是单个变换 也可以是多个变换的组合 我正在尝试对其应用额外的变换 问题是这个变换可以重复应用 并且需要与现有的变换状态堆叠 因此在末尾附加额外的变换是不切实际的 浏览 d3 API 我没有注意到任何
  • 查找每第三个值并在 VIM 中插入 cr 或换行符

    因此 我有几个大型数据集 需要使其更具可读性 目前我必须进入并移动到每个第三个值并插入换行符 我已经在 VIM 中尝试了几种方法来使其正常工作 但似乎没有一个能返回我正在寻找的值 这是我的一些数据 0 96260310749184663 4
  • 如何改进多次 StringReplace 调用?

    我从客户那里读取文件 我需要处理读取的数据并删除一些不需要的字符 我的函数有效 但我正在尝试改进 FixData 函数以提高速度 性能和可维护性 是否可以将多个 StringReplace 调用替换为仅循环一次数据并替换为所需的任何内容的调
  • 有没有办法将多个 TraCI 模块连接到 OMNet++/veins 模拟?

    要启动任何静脉模拟 需要使用 Veins launchd 守护进程 它基本上采用 sumo 配置文件 找到未使用的端口 启动 sumo 并桥接 sumo 和 OMNet 之间的连接 现在 由于这是基于套接字的通信 我想连接一个单独的 Tra
  • 在 Pycharm 中以 DEBUG 模式跳过 Django 服务器上的系统检查

    我正在 Pycharm 中以调试模式运行 django 应用程序 每次我更改代码时都会执行一些系统检查 pydev debugger process 2354 is connecting Performing system checks 有
  • 如何在D3中的图表标签上触发onmouseover事件

    我用 D3 制作了以下图表 当将鼠标悬停在图表上时 中间的空间会显示信息 我有以下代码来处理该事件 var path svg selectAll path data pie get this data enter append path a
  • 如何在Java运行时动态添加类字段[重复]

    这个问题在这里已经有答案了 可能的重复 如何动态向类添加属性 https stackoverflow com questions 14442998 how to dynamically add properties to class 我想知
  • Vb。 NET 将日期转换为数字

    我在 VB 中有这段代码 网 dim date e As DateTime date e New DateTime CLng Convert ToDouble 635434240520170000 结果是 12 08 2014 07 07
  • Laravel 密室获得 401 授权

    我正在使用 Laravel Sanctum 和 Vuejs SPA 两者都驻留在同一顶级域中 Laravel backend app demo localhost Vue SPA app spa demo localhost 当使用 axi
  • 旋转相机与旋转场景点(仅该点,而不是整个场景)之间有什么不同?

    我认为旋转相机并拍摄场景照片与保持相机稳定并反向旋转场景会产生相同的结果 假设原始相机旋转矩阵为R1 旋转相机意味着我们应用另一个旋转矩阵 R12 因此 R2 R12 R1 是新的旋转矩阵 假设X是场景点的真实世界坐标 以反向方式旋转场景点
  • 如何从arraylist动态创建pscustomobject?

    这篇文章是对该主题的补充here https stackoverflow com a 56876792 8397835 基本上 我有2个脚本 script1 具有以下内容 exportObject New Object System Col
  • 如何用Python去除图像中的小物体

    我的 python 代码有问题 我想对胸部X光片进行图像处理以获得肺部模式 但我的代码结果仍然有一点污点 如何摆脱这些小物体 这是我的代码 import cv2 import numpy as np from skimage import
  • 如何从 C# 调用 Spotify API

    我正在尝试使用 C 调用 Spotify API 不幸的是 我已经被困在获取access token 这就是我试图得到它的方法 private static async Task
  • 如何限制创建 celery 任务的速度快于消耗速度的脚本?

    我有一个脚本可以生成数百万个 Celery 任务 数据库中每行一个任务 有没有办法限制它 以免它完全淹没芹菜 理想情况下 我想让 Celery 保持忙碌 但我不希望 Celery 队列的长度超过几十个任务 因为这只是浪费内存 特别是因为如果
  • Java:除了它们所属的对象之外,同步方法还锁定什么(如果有的话)?

    现在 我不确定这是否是一个愚蠢的问题 如果是 请耐心等待 对象上的锁是 递归的 吗 e 如果两个对象在其字段中引用了第三个对象 并且一个线程正在这两个对象之一上运行同步方法 那么任何其他线程都可以访问第三个对象吗 a and b are s
  • Mongoose .save() 未保存到数据库?

    我的 Mongoose save 方法有问题 数据库永远不会被创建 数据也不会被保存 并且不会抛出任何错误 我已经用尽了谷歌和 stackoverflow 寻找类似的建议 但没有运气 所以将其开放给任何可以帮助我的人 我的 POST 请求是