程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试通过 populate() 获取用户信息,但返回没有错误的空数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决尝试通过 populate() 获取用户信息,但返回没有错误的空数组?

开发过程中遇到尝试通过 populate() 获取用户信息,但返回没有错误的空数组的问题如何解决?下面主要结合日常开发的经验,给出你关于尝试通过 populate() 获取用户信息,但返回没有错误的空数组的解决方法建议,希望对你解决尝试通过 populate() 获取用户信息,但返回没有错误的空数组有所启发或帮助;

我尝试为两种类型的用户“买家和卖家”提供一种注册方法。 当我保存卖家时,我应该获得有关他们的“商店信息”的所有信息,请参阅下面我更新的代码。 我使用了 populate() 但我得到了一个空数组。 我的想法错了吗?

注册代码

exports.signupUser = async (req,res,next) => {  
    role = req.body.role
    const user = new User(req.body)
    const seller = new Seller(req.body)
    try{
        if(role=='seller'){
            await seller.save()
            await user.save()
            const token = await user.generatetoken()
            res.status(200).send({
                error: null,APIStatus:true,data: {user,seller,token}
            })
        }
        await user.save()
        const token = await user.generatetoken()
        res.status(200).send({
            error: null,token}
        })
    }
    catch(error){
        res.status(400).send({
            error: error.message,APIStatus:false,data: 'unauthorized user'
        })

    }
}   

登录代码

exports.login = async (req,res) => {
    try{
        const user = await User.findUserByCredentials(req.body.email,req.body.password)
        const token = await user.generatetoken()
        console.log(user.role)
        if(user.role=='seller'){
            console.log(user._ID)
           await User.findOne({_ID: user._ID}).populate('storeinfo').exec(function(err,user) {
            if (err) {console.log(err)}
            res.status(200).send({
                error: null,user,token
            })})
        }
        res.status(200).send({
            error: null,data: 'Something went wrong'
        })
       
    }
}

架构用户

const userSchema = new Schema({

    first_name: { type: String,required:true},last_name: { type: String,email: { type: String,unique: true,required: true,trim: true,lowercase: true,valIDate(value) {
      if (!valIDator.isEmail(value)) throw new Error("InvalID Email");  },},password: { type: String,minlength: 6,match: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/},role: { type: String,enum: ['admin','seller','user'],default: 'user',required: true},mobileNumber: { type: String,default:'',valIDate(value) {
        if (!valIDator.isMobilePhone(value,["ar-EG"]))
          throw new Error("invalID phone number");
      },address: {
        type: String,trim: true
    },storeinfo:{    
        type: mongoose.Schema.Types.ObjectID,ref:'Seller',tokens: [{
        token: {
            type: String,required: true
        }
    }]
},{
    timestamps: true
})
userSchema.methods.generatetoken = async function(){
    const user = this
    const token = jwt.sign({_ID: user._ID.toString(),role:user.role},process.env.JWTKEY)
    user.tokens = user.tokens.concat({token})
    await user.save()
    return token
}
// login
userSchema.statics.findUserByCredentials =  async(email,password)=>{
    const user = await User.findOne({email})
    if(!user) throw new Error('invalID email')
    const matched = await bcrypt.compare(password,user.password)
    if(!matched) throw new Error('invalID password')
    return user
}
const User = mongoose.model('User',userSchema)
 module.exports = User

卖家架构

const SellerSchema =  new Schema(
  {
    storename: {
      required: true,type: String,category: {
      type: String,required: true
     },image: {
      type: String,// required: true,addresses:[
               {
                  street: String,locality: String,aptname: String,lat: Number,lng: Number,}
          ],numberOfBranches: Number,_userID:{ type: Schema.Types.ObjectID,ref: 'User'},items: [{ type: Schema.Types.ObjectID,ref: "Item" }]
  },{ timestamps: true }
);
const Seller = mongoose.model('Seller',SellerSchema)

module.exports = Seller

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的尝试通过 populate() 获取用户信息,但返回没有错误的空数组全部内容,希望文章能够帮你解决尝试通过 populate() 获取用户信息,但返回没有错误的空数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: