当前位置: 首页 > 面试题库 >

Mongoose与方法在Mongoose

葛学民
2023-03-14
问题内容

据我所知,static方法是Class Methods,那methodsInstanceMethods,并且Virtuals也喜欢Instance Methods,但它们不是存储在数据库中。

但是,我想知道那是methods和之间的唯一区别virtuals。还有其他我想念的东西吗?


问题答案:

实例方法,静态方法或虚拟方法均未存储在数据库中。方法与虚拟函数之间的区别在于,虚拟函数的访问方式类似于属性,方法的调用方式类似于函数。实例与静态实例与虚拟实例之间没有区别,因为在类上具有可访问的虚拟静态属性是没有意义的,但在类上具有某些静态实用程序或工厂方法确实是有道理的。

var PersonSchema = new Schema({
  name: {
    first: String,
    last: String
  }
});

PersonSchema.virtual('name.full').get(function () {
  return this.name.first + ' ' + this.name.last;
});

var Person = mongoose.model('Person', PersonSchema);

var person = new Person({
  name: {
    first: 'Alex',
    last: 'Ford'
  }
});

console.log(person.name.full);

// would print "Alex Ford" to the console

而方法的调用方式就像普通函数一样。

PersonSchema.method('fullName', function () {
  return this.name.first + ' ' + this.name.last;
});

var person = new Person({
  name: {
    first: 'Alex',
    last: 'Ford'
  }
});

console.log(person.fullName());

// notice this time you call fullName like a function

您也可以像常规属性一样“设置”虚拟属性。只需调用.get.set设置两个操作的功能。注意,在中.get您返回一个值,而在中.set您接受一个值并使用它来设置文档的非虚拟属性。

PersonSchema
  .virtual('name.full')
  .get(function () {
    return this.name.first + ' ' + this.name.last;
  })
  .set(function (fullName) {
    var parts = fullName.split(' ');
    this.name.first = parts[0];
    this.name.last = parts[1];
  });

var person = new Person({
  name: {
    first: 'Alex',
    last: 'Ford'
  }
});

console.log(person.name.first);

// would log out "Alex"

person.name.full = 'Billy Bob';

// would set person.name.first and person.name.last appropriately

console.log(person.name.first);

// would log out "Billy"

从技术上讲,您可以对所有方法使用方法,而从不使用虚拟属性,但是对于某些事情(例如我在此处展示的示例)来说,虚拟属性很优雅person.name.full



 类似资料:
  • 我有两个猫鼬方案,一个用于用户,一个用于帖子。 一个用户可以喜欢许多帖子。 最后,我想在客户端呈现用户喜欢的所有帖子,在一个部分,我可以使用填充()方法,在另一个部分,用户不喜欢的帖子,而不创建喜欢的帖子的副本。 我可以使用un填充()方法只获取不喜欢的帖子吗?如果没有,最好的方法是什么?

  • 我想使用mongodb数据库,但我注意到有两个不同的数据库,它们要么有自己的网站,要么有自己的安装方法:mongodb和Mongoose。所以我上来问自己这个问题:“我该用哪一个?”。 为了回答这个问题,我问大家,你们能不能解释一下这两者之间有什么不同?如果可能的话,利弊呢?因为他们真的和我长得很像。

  • 目标 无明确目标 知识点 了解 mongodb (http://www.mongodb.org/ ) 学习 mongoose 的使用 (http://mongoosejs.com/ ) 课程内容 mongodb mongodb 这个名词相信大家不会陌生吧。有段时间 nosql 的概念炒得特别火,其中 hbase redis mongodb couchdb 之类的名词都相继进入了大众的视野。 hba

  • 问题内容: 我正在使用Mongoose来管理Mongo数据库。我的连接文件非常简单: 然后在我的app.js中 并且“猫鼬”变量在全球范围内可用。我不想使用全局变量(至少不直接使用)。是否有更好的方法通过单例模式或其他方法在节点之间共享数据库连接变量(我正在使用express.js)? 问题答案: 我只是在app.js文件中执行以下操作: 此时,任何需要访问该模型的文件都可以执行以下操作: 最后,

  • 正在尝试在Typescript中实现Mongoose模型。搜索Google只发现了一种混合方法(结合JS和TS)。如果没有JS,我们将如何按照我相当天真的方法实现用户类? 希望能够IUserModel没有行李。

  • 问题内容: 几天以来,我一直在Google上进行搜索,并且尝试了很多操作,但是仍然无法对用户集合执行良好的全文本搜索。 我尝试了ElasticSearch,但几乎无法查询和分页… 我尝试了许多用于Mongoose的插件,例如ElMongo,mongoose-full- text,Mongoosastic等。每个人的文档都非常糟糕,我不知道如何执行良好的全文本搜索。 因此,我的收藏是普通收藏: 我在