gpt4 book ai didi

node.js:如何在我的用户模型上编写 "find or create"静态方法?

转载 作者:搜寻专家 更新时间:2023-10-31 23:27:00 24 4
gpt4 key购买 nike

我想在我的用户模型上编写一个“查找或创建”静态方法 - 非常类似于更新插入,但预保存 Hook 也会在其中运行。

这是我的用户模型:

var Promise = require("bluebird")
var mongoose = require("mongoose");
var bcrypt = Promise.promisifyAll(require('bcrypt-nodejs'));

var Schema = mongoose.Schema;

var userSchema = new Schema({
e: { type: String, required: true, trim: true, index: { unique: true } },
fb: { type: String, required: true },
ap: { type: String, required: true },
f: { type: String, required: true },
l: { type: String, required: true }
});

// Execute before each user.save() call
userSchema.pre('save', function(callback) {
bcrypt.genSaltAsync(5)
.then(function (salt) {
return bcrypt.hash(this.fb, salt, null);
})
.then(function (hash) {
user.fb = hash;
})
.then(function (){
return bcrypt.genSaltAsync(5);
})
.then(function (salt) {
return bcrypt.hash(this.ap, salt, null);
})
.then(function (hash) {
user.ap = hash;
})
.then(function () {
callback();
})
.catch(function (err) {
callback(err);
});
});

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

我想让它做这样的事情,但我尝试的都不起作用:

userSchema.statics.FindOrCreate(function(json) {
return this.findOne({e: json.email}, function(err, user) {
if(err) return err;
if(user) return user;
// return new user
});
});

非常感谢!

最佳答案

使用钩子(Hook)( Mongoose 中间件):

schema.post('find', function(result) {
// if there is no result
// create new document
});

关于node.js:如何在我的用户模型上编写 "find or create"静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32842114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com