首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nedb -动态创建数据库

nedb -动态创建数据库
EN

Stack Overflow用户
提问于 2020-12-13 01:10:29
回答 1查看 108关注 0票数 1

我有两个临时工。我和我的树莓派上的传感器有一个node.js Express应用程序。我想用传感器对象动态创建数组的nedb数据库。

所以我有一个带有传感器的物体:

代码语言:javascript
复制
  sensors: [
    {
      name: "Indoor",
      type: 22,
      pin: 21
    },
    {
      name: "Outdoor",
      type: 22,
      pin: 21
    }
  ]};

现在我想为每个传感器创建三个数据库:

代码语言:javascript
复制
databaseSetup(app.sensors);

function databaseSetup(sensor){
  const dataStore = require('nedb');
  const databaseVariables = [];
  sensor.forEach((sensor) => {
    const live = 'live' + sensor.name;
    const seconds = 'seconds' + sensor.name;
    const hours = 'hours' + sensor.name;
    const test = { 
    live: new dataStore(`./databases/temp/${sensor.name}/live.db`),
    seconds: new dataStore(`./databases/temp/${sensor.name}/seconds.db`),
    hours: new dataStore(`./databases/temp/${sensor.name}/hours.db`) }
    databaseVariables.push(test);
  });
} 

但这是行不通的。有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-17 15:24:26

我不知道你为什么要这样做,因为在我看来,这是一种糟糕的做法。但是你可以让它动态化。如下所示:

代码语言:javascript
复制
const dt = require('nedb');
const db = [];

//USING LOOP and FUNCTION
let list = [{ name: "GasSensor" }, { name: "TempSensor" }];
let index = 0;

//BAD Practice
let setup = () => {
    if (index + 1 > list.length) return;

    let newInstance = new dt({ filename: 'nodejs/data/nedb_' + list[index].name, autoload: true });

    console.log("Working on index " + (index + 1));

    newInstance.loadDatabase((err) => {
        if (err) {
            //...
        } else {
            db.push(newInstance);
        }

        index++;
        setup();
    });
}

setup();

还可以使用API:

代码语言:javascript
复制
const exp = require("express");
const app = exp();
const dt = require('nedb');
const db = [];

app.get("/make/db/:name", (q, r) => {
    //BAD PRACTICE
    //JUST FOR TEST
    let newInstance = new dt({ filename: 'nodejs/data/nedb_' + q.params.name, autoload: true });

    newInstance.loadDatabase((err) => {
        if (err) {
            console.log(err + "");
            r.send("ERROR");
        }
        else {
            db.push(newInstance);
            console.log("Database is loaded");
            r.send("NEW DB CREATED");
        }
    });
});

app.listen(3000);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65267609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档