【问题标题】:resetting Mongoose model cache重置猫鼬模型缓存
【发布时间】:2013-04-14 19:45:33
【问题描述】:

我正在尝试让 mocha 的 --watch 选项起作用。它工作正常,直到我不得不对猫鼬模型做任何事情。显然 Mongoose 保留了某种缓存,据我了解,我得到的错误是tracked and closed。问题是,我对这整件事有点陌生,需要一些指导,如何以及在哪里放置我需要的东西才能让它发挥作用。所以,我已经尝试过:

  • creating a wrapper around mongoose.model。有效,但显然违背了--watch 的目的。
  • 在我的 Mongoose 套件的“之后”块中断开与 Mongo(使用 mongoose.disconnect)的连接。
  • 放弃 --watch 并每次都运行新的测试。

在这三个中,显然是在第三个作品中,我真的很想使用我的构建工具的所有功能。所以,这就是我所拥有的。我哪里错了?

models/user.js

var mongoose = require('mongoose'),
    register = require('./_register');

var userSchema = mongoose.Schema({
    email: String,
    password: String
});

userSchema.methods.setPassword = function(password) {
    this.password = password;
};

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

测试/models.user.js

var User = require('../models/user');

describe('User', function() {

    describe('#setPassword()', function() {
        it('should set the password', function() {
            var user = new User();
            user.setPassword('test');
            user.password.should.not.equal('');
        });
        it('should not be in plaintext');
    });

    describe('#verifyPassword()', function() {
        it('should return true for a valid password');
        it('should return false for an invalid password');
    });
});

【问题讨论】:

    标签: node.js mongoose mocha.js


    【解决方案1】:

    我在 afterEach() 块中运行它取得了一些成功:

    delete mongoose.models.YourModel;
    delete mongoose.modelSchemas.YourModel;
    

    【讨论】:

    【解决方案2】:

    为了补充boneskull,这里是我使用的ES6代码,包括连接打开/关闭来测试User mangoose模型:

    import mongoose from 'mongoose'
    import User from '/models/user'
    
    describe('User model', () => {
      beforeEach((done) => {
        mongoose.connect('mongodb://localhost/somedatabase-test', done)
      })
      afterEach((done) => {
        delete mongoose.models.User
        delete mongoose.modelSchemas.User
        mongoose.connection.close(done)
      })
      ...
    })
    

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 2021-06-30
      • 2020-05-09
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 2017-02-26
      相关资源
      最近更新 更多