postgresql 用户如何使用postgres nodejs发布喜欢和不喜欢的内容?

n3schb8v  于 2023-04-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

我很新,这一点,我想实现,用户可以删除他们的喜欢在一个职位时,提出的要求和喜欢已经创建。我可以创建喜欢,但我不能删除它。
这是我喜欢的模型:

const Likes = db.define('likes', {
    id: {
        type: DataTypes.UUID,
        primaryKey: true
    },
    userId: {
        type: DataTypes.UUID,
        allowNull: false,
        references: {
            key: 'id',
            model: Users
        }
    },
    postId: {
        type: DataTypes.UUID,
        allowNull: false,
        references: {
            key: 'id',
            model: Posts
        }
    }
})

我的帖子模型:

const Posts = db.define('posts', {
    id: {
        type: DataTypes.UUID,
        primaryKey: true
    },
    userId : {
        type: DataTypes.UUID,
        allowNull: false,
        references: {
            key: 'id',
            model: Users
        }
    },
    content: {
        type: DataTypes.TEXT,
        allowNull: false,
        validate: {
            len: [1, Infinity]
        }
    },
   

})

我的用户型号:

const Users = db.define('users' ,{
    id: {
        type: DataTypes.UUID,
        primaryKey: true
    },
    firstName: {
        type: DataTypes.STRING,
        allowNull: false,
        validate: {
            len: [2, 50]
        }
    },
    lastName: {
        type: DataTypes.STRING,
        allowNull: false,
        validate: {
            len : [2, 50]
        }
    },
    email: {
        type: DataTypes.STRING,
        allowNull: false,
        validate: {
            isEmail: true
        },
        unique: true
    },
    password: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    gender: {
        type: DataTypes.STRING,
    },
    birthday: {
        type: DataTypes.DATEONLY,
        allowNull: false
    },
    nickName: {
        type: DataTypes.STRING,
        allowNull: false,
        unique: true
    },
    profileImg: {
        type: DataTypes.STRING,
        validate: {
            isUrl: true
        }
    },
    role: {
        type: DataTypes.STRING,
        defaultValue: 'normal'
    },
    status: {
        type: DataTypes.STRING,
        defaultValue: 'active'
    },
    isVerified: {
        type: DataTypes.BOOLEAN,
        defaultValue: false
    }
})

这就是我如何做的请求:

const createLike = async (obj) => {

    const like = await Likes.findOne({
        where: {
            userId: obj.userId,
            postId: obj.postId
        }
    })

    if(like){
        await like.destroy()
    }
    
    const data = await Likes.create({
        id: uuid.v4(),
        userId: obj.userId,
        postId: obj.postId
    })
    return data
}

在此之后,我能够创建类似的,但不能删除它。

yhived7q

yhived7q1#

在代码中,你寻找一个like。如果你找到它,你删除它,然后重新创建它。它可能应该是如果你找到它,删除它,否则创建它。所以:

if(like){
        await like.destroy()
    } else {
        await Likes.create({
            id: uuid.v4(),
            userId: obj.userId,
            postId: obj.postId
        })
    }

相关问题