我有两个临时工。我和我的树莓派上的传感器有一个node.js Express应用程序。我想用传感器对象动态创建数组的nedb数据库。
所以我有一个带有传感器的物体:
sensors: [
{
name: "Indoor",
type: 22,
pin: 21
},
{
name: "Outdoor",
type: 22,
pin: 21
}
]};现在我想为每个传感器创建三个数据库:
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);
});
} 但这是行不通的。有人能帮帮我吗?
发布于 2020-12-17 15:24:26
我不知道你为什么要这样做,因为在我看来,这是一种糟糕的做法。但是你可以让它动态化。如下所示:
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);


https://stackoverflow.com/questions/65267609
复制相似问题