我正在使用 Payload CMS 与 Next.js 和 Mongodb 创建一个电子商务网站,使用 Payload CMS 来管理内容和连接数据库。但我遇到了 Payload CMS 提供的管理仪表板的问题,我将管理仪表板设置为 /sell 端点,然后导航到该端点,我只找到了一个登录页面,没有欢迎注册选项,这阻止了我从数据库中查找我的收藏
这是我的 payload.config.ts 文件
import { webpackBundler } from '@payloadcms/bundler-webpack';
import { mongooseAdapter } from '@payloadcms/db-mongodb';
import { slateEditor } from '@payloadcms/richtext-slate';
import dotenv from 'dotenv';
import path from 'path';
import { buildConfig } from 'payload/config';
import { Users } from './collections/Users';
dotenv.config({
path: path.resolve(__dirname, '../.env')
});
export default buildConfig({
serverURL: process.env.NEXT_PUBLICK_SERVER_URL || '',
collections: [Users],
routes: {
admin: '/sell'
},
admin: {
user: 'users',
bundler: webpackBundler(),
meta: {
titleSuffix: '- Shopvista',
favicon: '/favicon.ico',
ogImage: '/thumbnail.jpg'
}
},
rateLimit: {
max: 2000,
},
db: mongooseAdapter({
url: process.env.MONGODB_URL!,
}),
editor: slateEditor({}),
typescript: {
outputFile: path.resolve(__dirname, 'payload-types.ts')
},
})
这是我的用户收藏
import { Access, CollectionConfig } from 'payload/types'
const adminsAndUser: Access = ({ req: { user } }) => {
if (user.role === 'admin') return true
return {
id: {
equals: user.id,
},
}
}
export const Users: CollectionConfig = {
slug: 'users',
auth: true,
access: {
read: adminsAndUser,
create: () => true,
update: ({ req }) => req.user.role === 'admin',
delete: ({ req }) => req.user.role === 'admin',
},
admin: {
hidden: ({ user }) => user.role !== 'admin',
defaultColumns: ['id'],
},
fields: [
{
name: 'role',
defaultValue: 'user',
required: true,
type: 'select',
options: [
{ label: 'Admin', value: 'admin' },
{ label: 'User', value: 'user' },
],
},
],
}
我做错了什么?
如果您看到的是管理员登录页面,而不是创建第一个用户页面,则一定是您的
users
集合中已经有一个用户。您可以手动从集合中删除该用户,然后再次浏览到 /sell
。它应该将您重定向到用于创建第一个用户的表单页面。
我想知道你的第一个用户来自哪里。因为我在
onInit
中没有看到这一点,所以也许你的“脚本”package.json 中有些东西在启动服务器之前正在运行种子,除非你使用现有用户连接到现有数据库。