主要试用了两个库:mongodb、mongoose


由于服务器使用的是比较老版本的mongodb,如果使用比较新的客户端,编译时会出现问题:

Server at xxxx:27017 reports maximum wire version 4, but this version of the Node.js Driver requires at least 6 (MongoDB 3.6)


终级解决方案:去掉类型


const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;

@types/mongodb 在package.json中去掉了,yarn install不会自动 删除,得手工删除了  rm -rf node_modules/@types/mongodb。 再./build.sh 才能成功……



mongoose

使用 5.13.17版本的mongoose搭配 typescript时,使用ts-node能直接运行成功。但是使用 tsc 进行编译时,出现各种问题……

原因可能是:当时不是原生支持typescript,类型定义不支持高版本的typescript?

废弃,使用mongodb重写


mongodb


import { MongoClient } from 'mongodb';
// or as an es module:
// import { MongoClient } from 'mongodb'

// Connection URL
const url = 'mongodb://xxxx:27017/xxx';
const client = new MongoClient(url, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  auth: {
    user: 'xxx',
    password: 'xxx'
  }
  // useFindAndModify: true
  // useCreateIndex: true
});

// Database Name
const dbName = 'xxx';

async function main() {
  // Use connect method to connect to the server
  await client.connect();

  console.log('Connected successfully to server');
  const db = client.db(dbName);
  const collection = await db.collection('deviceInfo').estimatedDocumentCount();

  console.log(collection);
  // the following code examples can be pasted here...

  return 'done.';
}

main()
  .then(console.log)
  .catch(console.error)
  .finally(() => client.close());