MongoJS を使用して MongoDB からのデータを処理する際に問題が発生しましたが、解決を拒否するという約束があります。なぜこれがうまくいかないのか、正直なところ混乱しています。ローカルマシンでは問題なく動作しますが、サーバーに移動すると壊れます。モジュールとしてのみ壊れることを除いて。deasync を使用しているからでしょうか。もしそうなら、どうすれば修正できますか?
これが私がやっていることを、私にとってうまくいかないことに圧縮したものです
インデックス内:
const db = require('./db')
//Obviously this works I'm just showing what I mean by "module"
data = db.get('somedata') //Passthrough for getData
console.log(data)
//On local machine, console says: thedata
//On deb server, console says: Promise { 'thedata' }
//On deb server, console ALSO says: MongoDB request timed out: Promise { 'thedata' }
// ^ (this is from the timeout part I added because it froze)
DBモジュールで:
const db = mongojs(`connectionURIstring`, ['bot'])
const bdata = db.bot
function syncP(promise) {
var answer;
promise.then(value => {
//Runs every time on local machine but not on server as module
answer = value
})
//I also have .catch but it's not relevant
setTimeout(function () {
//Never runs on local machine but runs every time on server as module
if (answer) return;
answer = promise
console.error('MongoDB request timed out:', promise)
}, 2000)
require('deasync').loopWhile(function () { return !answer })
return answer
}
function getData(datapath) {
//Datapath processing here
var GDP = new Promise((resolve, reject) => {
bdata.findOne({
_id: primary
}, function (err, dataJ) {
//Stuff where I format data, comes out as variable data
resolve(data)
})
})
return syncP(GDP)
}
なぜこれがうまくいかないのか、私には本当にわかりません。独立して動作するのであれば、モジュールとして動作しない理由はありません。別のコンピューターで動作します。私が推測できる唯一のことは、それが deasync の動作に関係していることですが、それでも、約束自体とは別のものであるため、それが約束に干渉する理由はありません。
これは私を狂わせています。