javascript - Mongoose 上的这种保存方法如何在不说明哪个数据库的情况下工作?

标签 javascript node.js mongodb mongoose mocha.js

首先,我有一个名为“Projects”的工作区文件夹

在此文件夹中,我有 2 个文件夹:

型号:

1) Something-model =>

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const Something-Schema = new Schema({
  name: String,
  weight: Number,
  length: Number
});
const Something-model = mongoose.model(
  "SomeModel",
  Something-Schema
);

module.exports = Something-model;

工作:创纪录的模特。

数据库:

1) Connection.js =>

const mongoose = require("mongoose");

//connect to mongoDB
mongoose.connect(
  "mongodb://localhost/Database",
  { useNewUrlParser: true }
);
mongoose.connection
  .once("open", () => {
    console.log("Connection has been made!");
  })
  .on("error", err => {
    console.log("Connection hasn't been made. Got this: " + err);
  });

作业:它连接到数据库。

2) 保存-test.js =>

let assert = require("assert");
let someModel = require("../Models/StevenChars");
// Data Saving Test

describe("Data-Saving", function() {
  it("Saving a data to database", function() {
    let Record-One = new someModel({
      name: "Jack",
      weight: 55,
      height: 150
    });
    Record-One.save().then(function() {
      assert(Record-One.isNew === false);
    });
  });
});

作业:将记录保存到数据库。

现在的问题是,如果 save() 不知道要保存到的数据库的位置(顺便说一句,它位于 Connection.js 中),那么它应该如何保存任何内容?

我用 Mocha 做了它,它说测试已经通过,但我仍然很困惑它是如何工作的。我只按照 Net Ninja 教程的步骤进行操作,但他没有解释 save() 的实际工作原理。

那么这是如何工作的呢?对不起,如果这是一个愚蠢的问题,我是服务器和数据库的初学者,我搜索了保存的工作原理,但没有得到答案。如果有人试图向我解释这一点,我将非常感激。

最佳答案

从看来你正在尝试做的目标是创建一个 Mocha 单元测试,它将通过 mongoose 作为提供者写入 mongodb。

好的,这就是手头的任务。为此,您需要熟悉以下几件事:

  1. Mocha以及如何编写测试。为什么需要"before" and "after"以及他们的主要目的。
  2. Mongoose Models以及它们如何工作 CRUD
  3. MongoDB这样您就可以实际连接并查看测试之后/期间是否获得了预期结果

话虽如此,这里是此类测试的一个示例:

describe('Database Tests', function() {
  //Before starting the test, create a  database connection
  //Once a connection is established invoke done()
  before(function (done) {
    mongoose.connect('mongodb://localhost/testDatabase');
    const db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error'));
    db.once('open', function() {
      console.log('We are connected to test database!');
      done();
    });
  });
  describe('Test Database', function() {
    //Save object with 'name' value of 'Mike"
    it('New name saved to test database', function(done) {
      var testName = Name({
        name: 'Mike'
      });

      testName.save(done);
    });    
  });
  //After all tests are finished drop database and close connection
  after(function(done){
    mongoose.connection.db.dropDatabase(function(){
      mongoose.connection.close(done);
    });
  });
});

您可以查看更多内容 example here或者只是搜索mocha mongoose testing

关于javascript - Mongoose 上的这种保存方法如何在不说明哪个数据库的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956836/

相关文章:

javascript - PHPStorm 上的 JSX 语法错误

javascript - asp.net 将 json 发布到 Controller

javascript - Onesignal 插件延迟 JS

node.js - 在 Jade 模板中连接部分路径

node.js - react 路由与快速路由

node.js - npm 开发 :start does not run

MongoDB Kafka Sink Connector 不处理 RenameByRegex 处理器

mongodb - 如何在聚合中使用_id?

javascript - 密码在保存到数据库之前不会进行哈希处理

javascript - 如何使用javascript删除Android webview中的内置边距