Git Product home page Git Product logo

dittorm's People

Contributors

dependabot[bot] avatar lete114 avatar lizheming avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dittorm's Issues

数据库表内多字段模糊查询

测试小Demotest.js

const Model = require('dittorm')('mongodb')

const admin = new Model('D_admin', { database: 'Discuss' })
async function run() {
  // 查看所有数据
  const data1 = await admin.select({})
  console.log('data1', data1)

  // 单字段模糊查询
  const data2 = await admin.select({ avatarCdn: ['LIKE', '%avatar%'] })
  console.log('data2', data2)

  // 多字段模糊查询
  const data3 = await admin.select({
    _complex: {
      avatarCdn: ['LIKE', '%avatar%'],
      siteUrl: ['LIKE', '%avatar%'],
      serverURLs: ['LIKE', '%avatar%'],
      _logic: 'OR'
    }
  })
  console.log('data3', data3)
}

run()

执行node test.js输入如下

Lete@Lete MINGW64 /l/Coding/Code/Nodejs/Discuss/dev (dev)
$ node test
mongodb://127.0.0.1:27017/Discuss
data1 [
  {
    username: 'admin111',
    password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
    mail: '',
    domain: '',
    requestHeaders: '',
    commentCount: 6,
    wordNumber: '0',
    limit: 0,
    limitAll: 0,
    akismet: '',
    avatarCdn: 'https://cravatar.cn/avatar/',
    siteUrl: '随意更改的数据用于测试:avatar',
    serverURLs: '看看多多字段模糊查询是否能匹配avatar',
    mailHost: '',
    mailPort: '',
    mailFrom: '',
    mailAccept: '',
    masterSubject: '',
    masterTemplate: '',
    replySubject: '',
    replyTemplate: '',
    id: '621f335abb5703508cb58caf'
  },
  {
    username: 'admin222',
    avatarCdn: 'https://cravatar.cn/avatar/',
    id: '821f335abb5703508cb58cad'
  },
  {
    username: 'admin333',
    siteUrl: '随意更改的数据用于测试:avatar',
    id: '921f335abb5703508cb58ca9'
  }
]
data2 [
  {
    username: 'admin111',
    password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
    mail: '',
    domain: '',
    requestHeaders: '',
    commentCount: 6,
    wordNumber: '0',
    limit: 0,
    limitAll: 0,
    akismet: '',
    avatarCdn: 'https://cravatar.cn/avatar/',
    siteUrl: '随意更改的数据用于测试:avatar',
    serverURLs: '看看多多字段模糊查询是否能匹配avatar',
    mailHost: '',
    mailPort: '',
    mailFrom: '',
    mailAccept: '',
    masterSubject: '',
    masterTemplate: '',
    replySubject: '',
    replyTemplate: '',
    id: '621f335abb5703508cb58caf'
  },
  {
    username: 'admin222',
    avatarCdn: 'https://cravatar.cn/avatar/',
    id: '821f335abb5703508cb58cad'
  }
]
(node:3692) UnhandledPromiseRejectionWarning: MongoError: unknown top level operator: $OR. If you have a field name that starts with a '$' symbol, consider using $getField or $setField.        
    at MessageStream.messageHandler (L:\Coding\Code\Nodejs\Discuss\dev\node_modules\mongodb\lib\cmap\connection.js:299:20)
    at MessageStream.emit (events.js:315:20)
    at processIncomingData (L:\Coding\Code\Nodejs\Discuss\dev\node_modules\mongodb\lib\cmap\message_stream.js:144:12)
    at MessageStream._write (L:\Coding\Code\Nodejs\Discuss\dev\node_modules\mongodb\lib\cmap\message_stream.js:42:5)
    at writeOrBuffer (_stream_writable.js:352:12)
    at MessageStream.Writable.write (_stream_writable.js:303:10)
    at Socket.ondata (_stream_readable.js:719:22)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:284:9)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:3692) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:3692) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

关于主键`id`的问题

const Model = require('dittorm')('mongodb')

const admin = new Model('D_admin', { database: 'Discuss' })
admin.select({}).then((data) => {
  console.log(data)
  /*
   返回结果:
  [
    {
      username: 'admin',
      password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
      mail: '',
      domain: '',
      requestHeaders: '',
      commentCount: 6,
      wordNumber: 0,
      limit: 0,
      limitAll: 0,
      akismet: '',
      avatarCdn: 'https://cravatar.cn/avatar/',
      siteUrl: '',
      serverURLs: '',
      mailHost: '',
      mailPort: '',
      mailFrom: '',
      mailAccept: '',
      masterSubject: '',
      masterTemplate: '',
      replySubject: '',
      replyTemplate: '',
      id: '621f335abb5703508cb58caf'
    }
  ]

  */
})

// 根据上方得到的返回结果,根据id查询,是否返回同样数据
admin.select({ id: '621f335abb5703508cb58caf' }).then((data) => {
  console.log(data)
  /*
  返回数据: []
  */
})

// 查询_id字段
admin.select({ _id: '621f335abb5703508cb58caf' }).then((data) => {
  console.log(data)
  /*
  返回数据: []
  */
})

// 根据username
admin.select({ username: 'admin' }).then((data) => {
  console.log(data)
  /*
  返回数据:

  [
    {
      username: 'admin',
      password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
      mail: '',
      domain: '',
      requestHeaders: '',
      commentCount: 6,
      wordNumber: 0,
      limit: 0,
      limitAll: 0,
      akismet: '',
      avatarCdn: 'https://cravatar.cn/avatar/',
      siteUrl: '',
      serverURLs: '',
      mailHost: '',
      mailPort: '',
      mailFrom: '',
      mailAccept: '',
      masterSubject: '',
      masterTemplate: '',
      replySubject: '',
      replyTemplate: '',
      id: '621f335abb5703508cb58caf'
    }
  ]
  */
})


/*
该代码执行后4个console.log()的结果如下

[
  {
    username: 'admin',
    password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
    mail: '',
    domain: '',
    requestHeaders: '',
    commentCount: 6,
    wordNumber: 0,
    limit: 0,
    limitAll: 0,
    akismet: '',
    avatarCdn: 'https://cravatar.cn/avatar/',
    siteUrl: '',
    serverURLs: '',
    mailHost: '',
    mailPort: '',
    mailFrom: '',
    mailAccept: '',
    masterSubject: '',
    masterTemplate: '',
    replySubject: '',
    replyTemplate: '',
    id: '621f335abb5703508cb58caf'
  }
]
[]
[]
[
  {
    username: 'admin',
    password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
    mail: '',
    domain: '',
    requestHeaders: '',
    commentCount: 6,
    wordNumber: 0,
    limit: 0,
    limitAll: 0,
    akismet: '',
    avatarCdn: 'https://cravatar.cn/avatar/',
    siteUrl: '',
    serverURLs: '',
    mailHost: '',
    mailPort: '',
    mailFrom: '',
    mailAccept: '',
    masterSubject: '',
    masterTemplate: '',
    replySubject: '',
    replyTemplate: '',
    id: '621f335abb5703508cb58caf'
  }
]

*/

Boolean 查询条件被忽略的bug

测试小Demotest.js

const Model = require('dittorm')('mongodb')

const admin = new Model('D_admin', { database: 'Discuss' })
async function run() {
  // 查看所有数据
  const data1 = await admin.select({})
  console.log('data1', data1)

  // 查询vip用户
  const data2 = await admin.select({ vip: true })
  console.log('data2', data2)
}

run()

输出结果

Lete@Lete MINGW64 /l/Coding/Code/Nodejs/Discuss/dev (dev)
$ node test
mongodb://127.0.0.1:27017/Discuss
data1 [
  {
    username: 'admin111',
    password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
    mail: '',
    domain: '',
    requestHeaders: '',
    commentCount: 6,
    wordNumber: '0',
    limit: 0,
    limitAll: 0,
    akismet: '',
    avatarCdn: 'https://cravatar.cn/avatar/',
    siteUrl: '随意更改的数据用于测试:avatar',
    serverURLs: '看看多多字段模糊查询是否能匹配avatar',
    mailHost: '',
    mailPort: '',
    mailFrom: '',
    mailAccept: '',
    masterSubject: '',
    masterTemplate: '',
    replySubject: '',
    replyTemplate: '',
    id: '621f335abb5703508cb58caf'
  },
  {
    username: 'admin222',
    avatarCdn: 'https://cravatar.cn/avatar/',
    id: '921f335abb5703508cb58ca9'
  },
  { username: 'admin333', vip: true, id: '62209a95592e000071002bf4' }
]
data2 [
  {
    username: 'admin111',
    password: '$2a$10$3OhJu5DRU3pDViuxEdaipe6lMbutdcaELYk8aW0SM1xquX.kD68iG',
    mail: '',
    domain: '',
    requestHeaders: '',
    commentCount: 6,
    wordNumber: '0',
    limit: 0,
    limitAll: 0,
    akismet: '',
    avatarCdn: 'https://cravatar.cn/avatar/',
    siteUrl: '随意更改的数据用于测试:avatar',
    serverURLs: '看看多多字段模糊查询是否能匹配avatar',
    mailHost: '',
    mailPort: '',
    mailFrom: '',
    mailAccept: '',
    masterSubject: '',
    masterTemplate: '',
    replySubject: '',
    replyTemplate: '',
    id: '621f335abb5703508cb58caf'
  },
  {
    username: 'admin222',
    avatarCdn: 'https://cravatar.cn/avatar/',
    id: '921f335abb5703508cb58ca9'
  },
  { username: 'admin333', vip: true, id: '62209a95592e000071002bf4' }
]

关于 CloudBase 数据库存储问题

如下图,在查询过程中,我指定了查询条件path/guide/API-Docs.html,我的预期是查询出path/guide/API-Docs.html的数据,而实际的结果却是查询了所有数据。

据我判断,这因该是#154行为使用where()导致的问题 CloudBase 文档示例
OLNW%9X}Y}8EW$6ONC3K(Z8

另外我还有一个疑问,关于do while的判断条件#171行,只有ret.length等于100才会停止,那么如果我只有1-5条数据或是大于100条,那么这不就是无限循环了?

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency @types/node to v17.0.45
  • fix(deps): update dependency think-model-postgresql to v1.1.8
  • chore(deps): update dependency think-model-sqlite to v1.3.2
  • fix(deps): update dependency @cloudbase/node-sdk to v2.11.0
  • fix(deps): update dependency deta to v1.2.0
  • fix(deps): update dependency leancloud-storage to v4.15.2
  • fix(deps): update dependency tablestore to v5.5.1
  • fix(deps): update dependency think-mongo to v2.2.1
  • chore(deps): update actions/checkout action to v4
  • chore(deps): update dependency @types/node to v20
  • chore(deps): update dependency ava to v6
  • chore(deps): update github/codeql-action action to v3
  • fix(deps): update dependency deta to v2
  • fix(deps): update dependency fast-csv to v5
  • 🔐 Create all rate-limited PRs at once 🔐

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/codeql-analysis.yml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
  • github/codeql-action v2
npm
package.json
  • @byteinspire/api ^1.0.12
  • @cloudbase/node-sdk ^2.7.1
  • deta ^1.0.2
  • fast-csv ^4.3.6
  • leancloud-storage ^4.12.2
  • mongodb ^4.0.0
  • tablestore ^5.1.1
  • think-helper ^1.1.3
  • think-model ^1.5.4
  • think-model-mysql ^1.1.6
  • think-model-postgresql ^1.1.7
  • think-mongo ^2.1.2
  • undici ^5.0.0
  • @types/mysql 2.15.21
  • @types/node 17.0.21
  • @types/pg 8.6.5
  • ava 4.3.1
  • dotenv 16.0.1
  • nyc 15.1.0
  • typescript 4.7.4
  • think-model-sqlite ^1.2.2

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.