具有共享 CLI 和浏览器数据库的 NodeJS 项目

NodeJS project with shared CLI and browser databases

我看过 linvodb3 and pouchdb for a project that I am working on. According to ,当通过 angular-cli 创建时,我无法直接从 CLI 访问 IndexDB 数据库。

在 NodeJS/Angular2 应用程序中是否有可用的 NoSQL 数据库创建一个可从 CLI 和网页访问而无需使用服务器实例的实例?

我需要预装一个数据库,其中包含不会在客户端上更新(至少在早期阶段)但允许离线文档库的搜索和其他数据库功能的信息。

编辑 1

let PouchDB = require('pouchdb');
let db = PouchDB('./db');

这给了我一个名为 "db" 的文件夹,其中包含直接从 NodeJS CLI 进行测试时的数据库文件。因为,只要我从 Angular2 和 NodeJS 调用相同的 db 文件夹,我就可以预发布数据。

对于 Angular2:

import * as PouchDB from 'pouchdb';
import { Injectable } from '@angular/core';

@Injectable()
export class PouchdbService {

   private _db: any; // <-- Database Object
   private _databaseName: string = "./my_db"; // <-- Database == folder location

   constructor() {
       this._db = new PouchDB(this._databaseName);
   }
}

来自 NodeJS:

#!/usr/bin/env node

'use strict'

let PouchDB = require ('pouchdb');
let databaseName = "./my_db"; // <-- same as in angular
let db = new PouchDb ( databaseName ); // <-- should be the same database

我正在使用 NodeJS/Electron/Express-PouchDB 来让它工作。我还通过使用 cluster 生成了 express 以确保 express 是从 electron 开始的,并且两者一起被拆除。

对于NodeJS/Electron方:

    const PouchDB = require('pouchdb');
    const express = require('express');
    const expressPouchDB = require('express-pouchdb');

    const app = express();

    PouchDB.defaults({prefix: './db/'});

    app.use('/',expressPouchDB(PouchDB, {
          overrideMode: {
            include: ['routes/fauxton']
          }
        })
    );

    resolve(app.listen(3000));

对于Angular2/4:

import * as PouchDB from 'pouchdb';
import * as pouchdbFind from 'pouchdb-find';

@Injectable()
export class PouchdbService {
    private _localdb: string = "http://localhost:3000/main" ;
    private _pouchDb: any;

  constructor() {
    this._pouchDb = new PouchDB(this._localdb);
    PouchDB.plugin(pouchdbFind);

 ...

这使我可以访问 PouchDB 服务。