我有一个 mongoose Schema 调用用户名,我试图在虚拟中连接用户名。当我在 get 中记录 virtual 或在这些模型中执行一个函数时,它返回 undefined。
我参考了文档,并且有示例嵌套模型,我更喜欢当前模型而不是嵌套它。我希望任何机构都可以在这方面帮助我。
const Schema = mongoose.Schema;
const UserSchema = new Schema({
firstname: {
type: String,
lowercase: true,
required: true
},
lastname: {
type: String,
lowercase:true,
text: true,trim: true,
required: true},
middlename: {
type: String,
text: true,trim: true,
lowercase: true
}
UserSchema.virtual('fullname')
.get(function(){
return this.firstname + ' ' + this.lastname;
})
.set(function(firstname, lastname) {
firstname = this.firstname;
lastname = this.lastname;
});
UserSchema.set('toObject', {virtuals: true});
UserSchema.set('toJSON', {virtuals: true});
});
const User = module.exports = mongoose.model('User', UserSchema);
Run Code Online (Sandbox Code Playgroud)
Ste*_*ado 13
尝试这个:
const Schema = mongoose.Schema
const UserSchema = new Schema({
firstname: {
type: String,
lowercase: true,
required: true
},
lastname: {
type: String,
lowercase:true,
text: true,
trim: true,
required: true
}
})
UserSchema.set('toObject', { virtuals: true })
UserSchema.set('toJSON', { virtuals: true })
UserSchema.virtual('fullname')
.get(function() {
return this.firstname + ' ' + this.lastname
})
.set(function(newName) {
var nameParts = newName.split(' ')
this.firstname = nameParts[0]
this.lastname = nameParts[1]
})
const User = module.exports = mongoose.model('User', UserSchema)
Run Code Online (Sandbox Code Playgroud)
然后你应该能够做到这一点:
var somebody = new User({
firstname: 'Some',
lastname: 'Body'
})
somebody.save(function(err, doc) {
console.log(somebody.fullname) // Some Body
doc.fullname = 'Another Person'
doc.save(function(err, doc) {
console.log(doc.fullname) // Another Person
})
})
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
5722 次 |
| 最近记录: |