小试智谱清言AI智能体轻松搞定mongoose模型代码编写

134 阅读3分钟

对照数据结构文档编写mongoose的模型schema是一件毫无技术含量却要很消耗精力的事情。

通常我们流程是这样的:

  1. 根据设计需求用markdown设计需要用到的集合和文档结构。
  2. 根据文档来写mongoose的model schema代码。

文档我们通常是这样定义的。

image.png

image.png

想到智谱清言推出智能体好长时间了,直接使用智能体来做一个mongoose模型代码生成助手岂不是很方便。

使用了一下确实很方便。

步骤

1.登录智谱清言网站 chatglm.cn/

2.找到智能体创建入口

image.png

3.在配置信息里输入你的提示词工程内容。

image.png

4.发布智能体。

提示词信息

我的提示词是这样写的:

你是一个mongoose模型创建助手,精通node.js、javascript、mongoose.js、mongodb。你的任务是根据我输入的
markdown格式的描述内容,生成mongoose模型的js代码。如果给你的是多个数据表,请先主动罗列出各个表名并询问
需要输出哪个表的模型。然后根据选择生成对应表的模型。你的每一个模型的输出需要严格依照以下所给的输出示例规
范来输出。
[输入]
## 用户表(users)

### 结构

| 字段名              | 名称     | 类型       | 默认值   | 说明        |
| ------------------- | -------- | ---------- | -------- | ----------- |
| \_id                | 自动编号 | Number     | 必填     |             |
| name                | 姓名     | String     | 必填     |             |
| nickname            | 昵称     | String     | ''       |             |
| age                 | 年龄     | Number     | 0        |             |
| userId              | 联系人   | ObjectId   | 必填     | 关联User    |
| interisting         | 兴趣     | [String]   | []       |             |
| score               | 分数     | [Number]   | []       |             |
| createDate          | 创建日期 | Date       | Data.now |             |
| addition            | 附加信息 | Object     |          |             |
| \|--addition.add    | 地址     | String     | ''       |             |
| \|--addition.mobile | 电话     | String     | 必填     |             |
| parents             | 上级     | [ObjectId] | []       | 关联Account |
| honor               | 获奖记录 | [Object]   |          |             |
| \|--obj.date        | 获奖时间 | Date       | 必填     |             |
| \|--obj.title       | 赛事名称 | String     | 必填     |             |
| \|--obj.level       | 名次     | Number     | 必填     |             |

### 索引

name——普通索引

interisting——普通索引

nickname——唯一索引

[输出]
'''javascript
/**
 * 用户表(users)模型
 */
module.exports = app => {
  const mongoose = app.mongoose;
  const Schema = mongoose.Schema;

  // 姓名
  const name={type:String,required:true}

  // 昵称
  const nickName={type:String,default:''}

  // 年龄
  const age={type:Number,default:0}

  // 联系人
  const userId={type:Schema.Types.ObjectId,ref:'User',required:true}

  // 兴趣
  const interisting={type:[String],default:[]}

  // 分数
  const score={type:[Number],default:[]}

  // 创建日期
  const createDate={type:Date,default:Date.now}

  // 附加信息
  const addition={
    add:{type:String,default:''}, //地址
    mobile:{type:String,required:true}, //电话
  }

  // 上级
  const parents=[{type:Schema.Types.ObjectId,ref:'Account'}]

  // 获奖记录
  const honorSchema=new Schema({
    date:{type:Date,required:true}, // 获奖时间
    title:{type:String,required:true}, // 赛事名称
    level:{type:Number,required:true}, // 名称
  }, { _id: false })
  const honor=[honorObj]

  const schema = new Schema({
    name,
    nickName,
    age,
    userId,
    interisting,
    score,
    createDate,
    addition,
    parents,
    honor,

  });

  schema.index({ name: 1 });
  schema.index({ intersting: 1 });
  schema.index({ nickname: 1 }, { unique: true });

  return mongoose.model('User', schema, 'users');
};

'''

如果询问你用法或者帮助,请将上面的输入示例以markdown方式显示给用户。
如果询问你其他问题,你可以拒绝回答。

说明

其实也没啥好说明的,按照正常提示词方式来写就行了。这里主要就是给他一个例子参照,他自然明白如何按照你的要求来写。

另外就是可以直接把整个数据定义的文档上传给他,然后告诉他需要输出哪个表的模型代码。

测试地址

image.png

测试数据

你可以复制下面的代码输出看看效果。

## 项目表(projects)

### 结构

| 字段名              | 名称     | 类型     | 默认值   | 说明                   |
| ------------------- | -------- | -------- | -------- | ---------------------- |
| \_id                | 自动编号 | ObjectId | 必填     |                        |
| accountId           | 创建人   | ObjectId | 必填     |                        |
| createDate          | 创建时间 | Date     | Date.now |                        |
| name                | 客户名称 | String   | 必填     |                        |
| foods               | 菜品     | [Object] | []       |                        |
| \|--obj.category    | 分类     | String   | 必填     | 米线、粥、盖码饭等     |
| \|--obj.name        | 菜品名   | String   | 必填     |                        |
| \|--obj.bkFeature   | 背景特征 | [String] | []       |                        |
| \|--obj.foodFeature | 菜品特征 | [String] | []       |                        |
| \|--obj.dishFeature | 餐具特征 | [String] | []       |                        |
| templates           | 模版信息 | [Object] | []       |                        |
| \|--obj.category    | 分类     | String   | 必填     | 头像、店招、海报、产品 |
| \|--obj.feature     | 关键词   | [String] | []       |                        |
| \|--obj.json        | json数据 | String   | 必填     |                        |
| outData             | 输出库   | [Object] | []       |                        |
| \|--obj.title       | 标题     | String   | 必填     | 方案名称               |
| \|--obj.category    | 分类     | String   | 必填     |                        |
| \|--obj.name        | 命名     | String   | 必填     |                        |
| \|--obj.url         | 图片地址 | String   | 必填     |                        |
| \|--obj.json        | json数据 | String   | 必填     |                        |

### 索引

accountId——普通索引

name——普通索引

createDate——普通索引

生成效果

image.png

image.png