# 增删改查

## 创建

### 创建单条数据 `create`

使用 [create()](../../reference-sdk-api/model/model#create) 方法创建新文章：

```javascript
const { data } = await models.post.create({
  data: {
    body: "你好，世界\n\nfrom china",
    title: "你好，世界",
    slug: "hello-world-cn",
  },
});

// 返回创建的文章 id
console.log(data);
// { id: "7d8ff72c665eb6c30243b6313aa8539e"}
```

### 创建多条数据 `createMany`

使用 [createMany()](../../reference-sdk-api/model/model#createmany) 方法创建新文章：

```javascript
const { data } = await models.post.createMany({
  data: [
    {
      title: "Hello World",
    },
    {
      title: "Hola Mundo ",
    },
    {
      title: "你好，世界",
    },
    {
      title: "Bonjour le Monde",
    },
  ],
});

// 返回创建的文章 idList
console.log(data);
// {
//   "idList": [
//       "7d8ff72c665ebe5c02442a1a7b29685e",
//       "7d8ff72c665ebe5c02442a1b77feba4b",
//       "7d8ff72c665ebe5c02442a1c48263dc6",
//       "7d8ff72c665ebe5c02442a1d53c311b0"
//   ]
// }
```

## 更新

### 更新单条数据 `update`

使用 [update()](../../reference-sdk-api/model/model#update) 方法更新文章内容：

```javascript
const { data } = await models.post.update({
  data: {
    title: "Hello World",
    body: "Hello World",
  },
  filter: {
    where: {
      _id: {
        $eq: "xxxx", // 推荐传入_id数据标识进行操作
      },
    },
  },
});

// 返回更新成功的条数
console.log(data);
// { count: 1}
```

### 创建或更新数据 `upsert`

使用 [upsert()](../../reference-sdk-api/model/model#upsert) 方法创建或更新文章内容：

```javascript
const post = {
  title: "Hello World",
  body: "Hello World",
  _id: "foo",
};
const { data } = await models.post.upsert({
  create: post,
  update: post,
  filter: {
    where: {
      _id: {
        $eq: post._id,
      },
    },
  },
});
console.log(data);
// 新增时返回
//   {
//     "count": 0,
//     "id": "foo"
// }

// 更新时返回
//   {
//     "count": 1,
//     "id": ""
// }
```

### 更新多条数据 `updateMany`

例如筛选内容不为空的数据，使用 [updateMany()](../../reference-sdk-api/model/model#updatemany) 方法更新文章内容和别名：

```javascript
const { data } = await models.post.updateMany({
  data: {
    slug: "hello-world",
    body: `
        "你好世界"可以翻译成以下几种语言：

        英语：Hello World 西班牙语：Hola Mundo 法语：Bonjour le Monde 德语：Hallo Welt 意大利语：Ciao Mondo 葡萄牙语：Olá Mundo 荷兰语：Hallo Wereld 日语：こんにちは、世界 (Konnichiwa, Sekai) 韩语：안녕하세요, 세계 (Annyeonghaseyo, Segye)`,
  },
  filter: {
    where: {
      title: {
        $nempty: 1, // 不为空的数据
      },
    },
  },
});

// 返回更新成功的条数
console.log(data);
// {
//   "count": 33
// }
```

## 删除

### 删除单条 `delete`

使用 [delete()](../../reference-sdk-api/model/model#delete) 方法删除指定 `_id` 的文章：

```javascript
const { data } = await models.post.delete({
  filter: {
    where: {
      _id: {
        $eq: "xxx", // 推荐传入_id数据标识进行操作
      },
    },
  },
});

// 返回删除成功的条数
console.log(data);
// {
//   "count": 1
// }
```

### 删除多条 `deleteMany`

例如,使用 [deleteMany()](../../reference-sdk-api/model/model#deletemany) 方法删除标题为 'Hello World' 的文章：

```javascript
const { data } = await models.post.deleteMany({
  filter: {
    where: {
      title: {
        $eq: "Hello World",
      },
    },
  },
});

console.log(data);
// 返回删除成功的条数
// {
//   "count": 7
// }
```

## 读取

### 读取单条数据 `get`

使用 [get()](../../reference-sdk-api/model/model#get) 方法获取特定文章：

```javascript
const { data } = await models.post.get({
  filter: {
    where: {
      _id: {
        $eq: _id, // 推荐传入_id数据标识进行操作
      },
    },
  },
});

// 返回查询到的数据
console.log(data);
// {
//     "owner": "Anonymous(95fblM7nvPi01yQmYxBvBg)",
//     "createdAt": 1717488585078,
//     "createBy": "Anonymous(95fblM7nvPi01yQmYxBvBg)",
//     "updateBy": "Anonymous(95fblM7nvPi01yQmYxBvBg)",
//     "_openid": "95fblM7nvPi01yQmYxBvBg",
//     "_id": "e2764d2d665ecbc9024b058f1d6b33a4",
//     "title": "你好，世界",
//     "body": "\"你好世界\"可以翻译成以下几种语言：\n\n英语：Hello World\n西班牙语：Hola Mundo\n法语：Bonjour le Monde\n德语：Hallo Welt\n意大利语：Ciao Mondo\n葡萄牙语：Olá Mundo\n荷兰语：Hallo Wereld\n日语：こんにちは、世界 (Konnichiwa, Sekai)\n韩语：안녕하세요, 세계 (Annyeonghaseyo, Segye)",
//     "slug": "hello-world",
//     "updatedAt": 1717490751944
// }
```

### 读取多条数据 `list`

使用 [list()](../../reference-sdk-api/model/model#list) 方法获取所有文章，返回查询到的数据列表 `records` 和 总数 `total`

```javascript
const { data } = await models.post.list({
  filter: {
    where: {},
  },
  getCount: true, // 开启用来获取总数
});

// 返回查询到的数据列表 `records` 和 总数 `total`
console.log(data);
// {
//     "records": [
//         {
//             "owner": "Anonymous(95fblM7nvPi01yQmYxBvBg)",
//             "createdAt": 1717488585078,
//             "createBy": "Anonymous(95fblM7nvPi01yQmYxBvBg)",
//             "updateBy": "Anonymous(95fblM7nvPi01yQmYxBvBg)",
//             "_openid": "95fblM7nvPi01yQmYxBvBg",
//             "_id": "e2764d2d665ecbc9024b058f1d6b33a4",
//             "title": "你好，世界",
//             "body": "\"你好世界\"可以翻译成以下几种语言：\n\n英语：Hello World\n西班牙语：Hola Mundo\n法语：Bonjour le Monde\n德语：Hallo Welt\n意大利语：Ciao Mondo\n葡萄牙语：Olá Mundo\n荷兰语：Hallo Wereld\n日语：こんにちは、世界 (Konnichiwa, Sekai)\n韩语：안녕하세요, 세계 (Annyeonghaseyo, Segye)",
//             "slug": "hello-world",
//             "updatedAt": 1717490751944
//         },
//         {
//          ...
//         },
//     ],
//     "total": 51
// }
```
