javascript - NodeJS - 'database.getOneWhere' 不是一个函数
问题描述
我正在尝试创建全局数据库函数,但每次我尝试访问它们时,它总是说对象未定义,我不知道为什么。
控制器/api/v1/users/index.js:
'use strict';
var path = require('path');
var database = require(path.resolve('database'));
module.exports = function (router) {
router.put('/', function (req, res) {
database.getOneWhere('table', 'row', 'data').then(result => {
//
});
});
}
数据库/index.js:
'use strict';
const r = require('rethinkdb');
module.exports = async function() {
getOneWhere = async function(table, key, value, callback) {
let conn = await r.connect({host: '127.0.0.1', port: 28015});
let cursor = await r.db('table').table(table).filter(r.row(key).eq(value)).run(conn);
try {
let arr = await cursor.toArray();
callback(arr);
} catch(e) {
callback(e);
}
}
}
它总是说这database.getOneWhere
不是一个功能。知道如何解决这个问题吗?
解决方案
getOneWhere
应该是 的属性module.exports
。您将其定义module.exports
为一个函数并放入getOneWhere
其中。它应该是:
'use strict';
const r = require('rethinkdb');
module.exports = {
getOneWhere: async function(table, key, value, callback) {
let conn = await r.connect({host: '127.0.0.1', port: 28015});
let cursor = await r.db('table').table(table).filter(r.row(key).eq(value)).run(conn);
try {
let arr = await cursor.toArray();
callback(arr);
} catch(e) {
callback(e);
}
}
};
或者:
'use strict';
const r = require('rethinkdb');
module.exports.getOneWhere = async function(table, key, value, callback) {
let conn = await r.connect({host: '127.0.0.1', port: 28015});
let cursor = await r.db('table').table(table).filter(r.row(key).eq(value)).run(conn);
try {
let arr = await cursor.toArray();
callback(arr);
} catch(e) {
callback(e);
}
};
推荐阅读
- node.js - res.sendFile, res.download PDF 文件
- typescript - 仅当道具名称是类字段时,如何将道具的值添加到类的实例
- python - Django TinyMCE 添加自定义样式格式
- c++ - 如何在将我的类分成 .h 和 .cpp 文件时使用聚合?
- ssl - MQTT 和 SSL/TLS
- jmeter-5.0 - 无法从 json 中提取值并在后续请求中使用它
- php - Symfony - Voter 在 /GET LIST 上返回空对象
- apache-kafka - Kafka Stream:如何基于跳跃窗口触发事件以及如何基于作为跳跃窗口一部分的窗口组合触发事件
- ssl - 在 Kafka 中应用 SSL(安全套接字层)安全性停止了代理服务器
- algorithm - 使用双链表堆