Node.js mongodb自定义集合/文档方法
我是mongodb新手,想知道是否可以在集合或文档上创建自定义方法。比如说:Node.js mongodb自定义集合/文档方法,node.js,mongodb,Node.js,Mongodb,我是mongodb新手,想知道是否可以在集合或文档上创建自定义方法。比如说: getFullname = function(){ return this.name + " " + this.surname; } var user = db.users.findOne({name:"Bob"}) console.log(user.getFullname()); 对于node.js,您可以使用它的支持来定义模型(即集合)模式以及方法 对于您的全名示例,virtuals非常适合: var u
getFullname = function(){
return this.name + " " + this.surname;
}
var user = db.users.findOne({name:"Bob"})
console.log(user.getFullname());
对于node.js,您可以使用它的支持来定义模型(即集合)模式以及方法
对于您的全名示例,virtuals非常适合:
var userSchema = new Schema({
name: String,
surname: String
});
userSchema.virtual('fullname').get(function() {
return this.name + ' ' + this.surname;
});
这将使您可以执行以下操作:
var User = mongoose.model('User', userSchema);
User.findOne({name:"Bob"}, function(err, user) {
console.log(user.fullname);
});
对于node.js,您可以使用它的支持来定义模型(即集合)模式以及方法
对于您的全名示例,virtuals非常适合:
var userSchema = new Schema({
name: String,
surname: String
});
userSchema.virtual('fullname').get(function() {
return this.name + ' ' + this.surname;
});
这将使您可以执行以下操作:
var User = mongoose.model('User', userSchema);
User.findOne({name:"Bob"}, function(err, user) {
console.log(user.fullname);
});
有两种方法,但你必须使用猫鼬。这不仅仅是一个mongoDB驱动程序,而是一个类似ORM的框架。您可以使用虚拟或方法: 虚拟: 作为@johnyhk,使用:
UserSchema.virtual('fullName').get(function() {
return this.name + ' ' + this.surname;
});
这将创建一个虚拟字段,该字段可在程序中访问,但不会保存到DB/中。虚拟字段还具有一个方法集,该方法集将在设置值时调用
UserSchema.virtual('fullName').get(function() {
return this.name + ' ' + this.surname;
}).set(function(fullName) {
this.name = fullName.split(' ')[0];
this.surname = fullName.split(' ')[1];
});
所以当你这样做的时候:
Doe = new User();
Doe.fullName = "John Doe";
Doe.name
// Doe
Doe.surname
// John
方法
这是最接近的事情:
UserSchema.methods.getFullname = function(){
return this.name + " " + this.surname;
}
JohnDoe.getfullName()
和MongoJS
这是最接近本机驱动程序的东西:
db.cursor.prototype.toArray = function(callback) {
this._apply('toArray', function(doc) {
doc.getFullName = ...
callback(doc);
});
};
有两种方法,但你必须使用猫鼬。这不仅仅是一个mongoDB驱动程序,而是一个类似ORM的框架。您可以使用虚拟或方法: 虚拟: 作为@johnyhk,使用:
UserSchema.virtual('fullName').get(function() {
return this.name + ' ' + this.surname;
});
这将创建一个虚拟字段,该字段可在程序中访问,但不会保存到DB/中。虚拟字段还具有一个方法集,该方法集将在设置值时调用
UserSchema.virtual('fullName').get(function() {
return this.name + ' ' + this.surname;
}).set(function(fullName) {
this.name = fullName.split(' ')[0];
this.surname = fullName.split(' ')[1];
});
所以当你这样做的时候:
Doe = new User();
Doe.fullName = "John Doe";
Doe.name
// Doe
Doe.surname
// John
方法
这是最接近的事情:
UserSchema.methods.getFullname = function(){
return this.name + " " + this.surname;
}
JohnDoe.getfullName()
和MongoJS
这是最接近本机驱动程序的东西:
db.cursor.prototype.toArray = function(callback) {
this._apply('toArray', function(doc) {
doc.getFullName = ...
callback(doc);
});
};
由于mongoose集合是异步检索的
,,因此您必须设置一个承诺
,或者将方法
调用嵌套在findOne
函数中。由于mongoose集合是异步检索的,承诺
,您必须设置一个承诺
,或者将方法
调用嵌套在findOne
函数中。如果我们不使用mongoose模块,而是使用默认模块驱动程序,该怎么办?如果我们不使用mongoose模块,而是使用默认模块驱动程序,该怎么办?