nedb - 动态创建数据库
Posted
技术标签:
【中文标题】nedb - 动态创建数据库【英文标题】:nedb - Create databases dynamically 【发布时间】:2021-03-23 19:53:34 【问题描述】:我有两个 Temp.我的 Raspberry Pi 上的传感器,我有一个 node.js Express 应用程序。我想用传感器对象动态创建一个数组的 nedb 数据库。
所以我有一个带有传感器的物体:
sensors: [
name: "Indoor",
type: 22,
pin: 21
,
name: "Outdoor",
type: 22,
pin: 21
];
现在我要为每个 Sensor 三个数据库创建:
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);
);
但这不起作用。有人可以帮帮我吗?
【问题讨论】:
【参考方案1】:我不确定您为什么要这样做,因为在我看来这是一种不好的做法。但你可以让它动态化。像这样:
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:
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);
【讨论】:
以上是关于nedb - 动态创建数据库的主要内容,如果未能解决你的问题,请参考以下文章