首先,我有一个名为“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。
好的,这就是手头的任务。为此,您需要熟悉以下几件事:
- Mocha以及如何编写测试。为什么需要"before" and "after"以及他们的主要目的。
- Mongoose Models以及它们如何工作 CRUD
- 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/