与数据库交互时防止服务器崩溃

时间:2018-07-24 04:56:50

标签: node.js mongodb express mongoose

我正在尝试使用猫鼬创建登录表单。当我尝试在数据库中查找例如不存在的电子邮件时,发生了错误。在这种情况下,我的应用程序崩溃了。

这是我的UserSchema:

defmodule B do
  require A
  def test, do: A.call(:test)
end
#⇒ ** (CompileError) iex:21: undefined function A.test/1
#      (stdlib) lists.erl:1338: :lists.foreach/2
#      (stdlib) erl_eval.erl:677: :erl_eval.do_apply/6
#      (iex) lib/iex/evaluator.ex:249: IEx.Evaluator.handle_eval/5

这是我的NodeJS代码和查询:

var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
  name: {
    type: String,
    required: true,
    trim: true
  },
  credit:{
    type: Number,
    default:0
  },
  email: {
    type: String,
    unique: true,
    required: true,
    trim: true
  },
  telegramId:{
    type: String,
    trim: true,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  inboxMessages: {
    type: Array
  },
  submittedBooks:{
    type: Array
  },
  profilePicture: {
    type: String,
    default: '/'
  }
});

var User = mongoose.model('User', userSchema);
module.exports = User;

UserModel.find({name: 'akbar'}, (err, data) =>{ if (err) { console.log(err); } else{ console.log(data[0].password); } }) 导致包含UserModel.find({name: 'akbar'}, ....)的错误。如何防止我的应用崩溃?

MongoDB sample

2 个答案:

答案 0 :(得分:2)

当您尝试从数据库中查找对象时,可能有3种情况。

  
      
  1. 内部服务器错误(您已选中此选项)。

  2.   
  3. 空或空值。 (您尚未检查)。

  4.   
  5. 获得所需的对象。 (您可以打印这些值)

  6.   

因此,要检查场景2,请使用以下代码,

UserModel.find({name: 'akbar'}, (err, data) =>{
    if (err) {
      console.log(err);
    } else if ((!data) || (data.length <= 0)) {
      console.log('No objecct exist');
    } else{
      console.log(data[0].password);
    }
  })

答案 1 :(得分:0)

您在NodeJS中将导入为

var userModel = require('place_you_defined_the_model')

否则,如果只是导入,例如import('place_you_define_model'),那么您应该使用

user.find({name:'Akbar'})