Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

【要注意】node.jsでActive directoryライブラリによるAD検索結果をテキストとして利用出来ない

$
0
0
やりたいこと PromiseオブジェクトをStringに変換して再利用したいのです。再利用の目的はHTMLやMarkDownのテキストの中に埋め込んで使うことです。 しかし、わたしは実力不足でこれができずに、貴重な時間を無駄にしてしまいました( ; ; ) 困ったこと PromiseオブジェクトをStringに変換出来ません。必ずConverting Object Promise to String in Javascriptエラーが発生します Activedirectoryライブラリ利用 const ActiveDirectory = require( 'activedirectory' ) const AD = { config : { url : 'LDAP://hogehoge.ad.foo.baa.jp' , baseDN : 'dc=ad,dc=foo,dc=baa,dc=jp' , username : process.env.ADUSER , password : process.env.ADPASSWORD , secure : true , timeLimit : 3000 , attributes : { user:[ 'sAMAccountName', 'displayName', 'department', 'mail' ] } } , query : '(mail={{mailAddress}})' } function getDepartmentFromAD(mailAddress){ return new Promise((resolve,reject) => { ad.find(AD.query.replace('{{mailAddress}}',mailAddress), (err, results) => { if ((err) || (! results)) { console.log('ERROR : ' + JSON.stringify(err)); return } resolve( results.users[0].department ) }) }) } function getIdNameMarkdownFromDepartment(department){ return new Promise((resolve,reject) => { resolve(department.replace(' ','|') + '|' + '|') }) } const createBelongsIdName = async function( kind, mailAddress, markdownList ) { try { if( kind == INFO.account.kind.employees ) { getDepartmentFromAD(mailAddress).then(getIdNameMarkdownFromDepartment).then((idNameMarkdown)=>{ setTimeout(()=>{markdownList += idNameMarkdown},INFO.timeOut) }) } else { markdownList += '-|' + '-|' } } catch( err ) { console.error( 'createBelongsIdName() : ' + err ) return null; } return markdownList } エラーの発生箇所 返されたPromiseオブジェクトをString型の変数markdownListに格納 markdownList += idNameMarkdown エラーの内容 String型のmarkdownListにPromiseオブジェクト型のidNameMarkdown代入できないと言うエラーが出ます。色々試行錯誤しましたが、Promiseオブジェクト型をString型に型変換することはできないようです。 GitHubなどに公開されている多くのコードがconsole.log()メソッドでPrpmiseオブジェクトが返した値をコンソールに表示するだけです。わたしがしたいのはPromiseオブジェクトをString型に型変換して再利用することです。 わたしの解決策(逃げ) node.jsを使うのを諦めて、PythonのActivedirectoryライブラリを利用しました。上記のPromise問題は起こらず、すんなり解決しました。しかし、あくまでもこれは代替手段の逃げです。個人的にはかなりモヤモヤしています。 お願い どなたか良い解決策をご存知ないでしょうか?

Viewing all articles
Browse latest Browse all 8691

Trending Articles