Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


11 questions online user: 3

0
votes
1answers
61 views
+10

Oracle左外連接返回0行,其中包含左數據集中的數據

0

我試圖獲取硬編碼事件的列表,並將其與實際事件加入表中,以便實際查看它們是否已執行。Oracle左外連接返回0行,其中包含左數據集中的數據

這裏是我的查詢:

SELECT a.Verification FROM (SELECT 'Verify ID changed' as Verification FROM DUAL 
UNION ALL 
SELECT 'Verify manual Valve closed' as Verification FROM DUAL 
UNION ALL 
SELECT 'Verify manual Valve open' as Verification FROM DUAL 
UNION ALL 
SELECT 'Visually verify Things' as Verification FROM DUAL 
) a 
LEFT OUTER JOIN JOBEVENTS c ON a.Verification = c.EVENTDESC 
WHERE c.EVT_TIME BETWEEN '22-Jan-2017' AND '22-Jan-2017' 

當我閱讀文檔的左外連接,那麼隊列應始終從返回左表中的數據,那麼,爲什麼我的查詢返回0行(沒有什麼在JOBEVENTS事件表中,但是硬編碼值始終存在)。

我誤解了LEFT OUTER JOIN的工作原理嗎?

+0

您的Where子句依賴於來自左連接的數據。如果左連接不匹配,那麼您的where子句也將無法匹配。 –

沙发
0
1

在連接的左側連接表部分創建過濾器,而不是where子句。

SELECT a.Verification, c.* 
FROM (
     SELECT 'Verify ID changed' as Verification FROM DUAL UNION ALL 
     SELECT 'Verify manual Valve closed' as Verification FROM DUAL UNION ALL 
     SELECT 'Verify manual Valve open' as Verification FROM DUAL UNION ALL 
     SELECT 'Visually verify Things' as Verification FROM DUAL 
    ) a 
LEFT OUTER JOIN JOBEVENTS c ON a.Verification = c.EVENTDESC 
     AND c.EVT_TIME BETWEEN '22-Jan-2017' AND '22-Jan-2017' 
; 

或者,您可以添加到您的where子句,以便可以從左連接表返回NULLS。例如:

SELECT a.Verification, c.* 
FROM (
     SELECT 'Verify ID changed' as Verification FROM DUAL UNION ALL 
     SELECT 'Verify manual Valve closed' as Verification FROM DUAL UNION ALL 
     SELECT 'Verify manual Valve open' as Verification FROM DUAL UNION ALL 
     SELECT 'Visually verify Things' as Verification FROM DUAL 
    ) a 
LEFT OUTER JOIN JOBEVENTS c ON a.Verification = c.EVENTDESC 
WHERE (c.EVT_TIME BETWEEN '22-Jan-2017' AND '22-Jan-2017' 
     OR c.EVENTDESC IS NULL 
    ) 
; 

您從該表允許空值在where子句中引用時務必小心與外連接表,否則你創建一個內部的等價條件加入(&有時被稱爲「隱含的內部聯接」) 。

5
votes
0answers
66 views
+10

错误:请求浏览器客户端域不安全:dialogflow.googleapis.com

我正在设置 DialogFlow包装,我正在使用 DialogFlow JavaScript SDK 但是,我收到以下错误:

错误:请求浏览器客户端域不安全:dialogflow.googleapis.com

这之前有效,但我不确定它为什么突然停止工作。

我已经尝试将所有代码恢复到有效的版本。我确定这是一个DialogFlow错误。

  const intentDetectResponse = await sessionClient.detectIntent(request)  

完整的错误日志如下:

  {错误:请求浏览器客户端域不安全:在Http2CallStream上的dialogflow.googleapis.com。call.on(/Users/NewProject/node_modules/@grpc/grpc-js/build/src/client.js:101:45)位于process.nextTick的Http2CallStream.emit(events.js:194:15)(/ Users /NewProject/node_modules/@grpc/grpc-js/build/src/call-stream.js:71:22)at process.internalTickCallback(internal / process / next_tick.js:70:11)code:3,details:'请求浏览器客户端域不安全:dialogflow.googleapis.com',metadata:Metadata {options:undefined,internalRepr:Map {'grpc-server-stats-bin'=> [Array]}}}   internalTickCallback(internal / process / next_tick.js:70:11)代码:3,详细信息:'请求浏览器客户端域不安全:dialogflow.googleapis.com',元数据:元数据{options:undefined,internalRepr:Map {'grpc- server-stats-bin'=> [Array]}}}   internalTickCallback(internal / process / next_tick.js:70:11)代码:3,详细信息:'请求浏览器客户端域不安全:dialogflow.googleapis.com',元数据:元数据{options:undefined,internalRepr:Map {'grpc- server-stats-bin'=> [Array]}}}  
    
        
沙发
+30

非常确定这是对话流服务的错误。这不是第一次面临一些问题的对话流。

板凳
+20

非常确定负载均衡器后面的服务器有问题。如果您多次尝试,有时请求可以通过。但它绝对应该是一个dialogflow api服务器问题。

是的,如果我们尝试多次获得回复。看起来像是对话框流服务器坏了。 - Sudheesh R 8月28日9:25

地板
0

这是Dialogflow方面的问题,他们的技术团队正在研究并解决它。然而,他们没有确切地说明实际问题是什么。

github问题也是如此。

0
votes
0answers
107 views
+10

貓鼬填充不是爲我工作

0

我有這個架構用戶貓鼬填充不是爲我工作

var mongoose = require("mongoose"), 
    passportLocalMongoose = require("passport-local-mongoose"); 

mongoose.Promise = global.Promise; 

var userSchema = new mongoose.Schema ({ 
    username: {type: String, required: true, unique: true}, 
    password: {type: String}, 
    role: {type: String, required: true}, 
    confirmed: {type: Boolean, required: true, default: false}, 
    active: {type: Boolean, required: true, default: true}, 
    name: String, 
    created: {type: Date, default: Date.now}, 
    admin: {type: Boolean, default: false, required: true} 
}); 

userSchema.plugin(passportLocalMongoose); 

module.exports = mongoose.model("User", userSchema); 

而另一架構公司,其中客戶用戶數組:

var mongoose = require("mongoose"); 
mongoose.Promise = global.Promise; 

var companySchema = new mongoose.Schema ({ 
    name: {type: String, required: true, unique: true}, 
    created: {type: Date, default: Date.now}, 
    active: {type: Boolean, required: true, default: true}, 
    staff: [{ 
     id: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "User" 
     }, 
     username: String 
    }], 
    clients: [{ 
     id: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "User" 
     }, 
     username: String 
    }] 
}); 

module.exports = mongoose.model("Company", companySchema); 

我在我的路線下面的代碼,但用戶信息沒有被填充到公司對象,什麼是我做錯了?

// EDIT route 
router.get("/:company_id/edit", middleware.checkCompanyOwnership, function(req, res) { 
    Company.findOne({_id: req.params.company_id}).populate({path: 'clients'}).exec(function(err, company) { 
     if (err || !company) { 
      console.log(err); 
      req.flash("error", err.message); 
      res.redirect("/"); 
     } else { 
      console.log("Request to edit company."); 
      //console.log(company); 
      res.render("company/edit", {title: "Edit Company", company: company}); 
     } 
    }); 
}); 

這是,如果我的控制檯日誌公司什麼我得到:

{ _id: 5a070874b4292914444b6e06, 
    name: 'ABC', 
    __v: 1, 
    clients: 
    [ { username: '[email protected]', 
     _id: 5a070206616810129b5c876a } ], 
    staff: [], 
    active: true, 
    created: 2017-11-11T14:25:56.359Z } 

感謝您的幫助。

沙发
0
2

貴公司的模式應該是這樣的

var companySchema = new mongoose.Schema ({ 
    ... 
    staff: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }], 
    clients: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }] 
}); 

請參閱該文檔http://mongoosejs.com/docs/populate.html

0
votes
0answers
52 views
+10

打破功能並看到錯誤信息

0

在路由器中,我通常使用req.json(object)來返回正確的結果。現在,在某些情況下,我需要返回的錯誤信息,例如打破功能並看到錯誤信息

router.post('/register', function (req, res, next) { 
    if (req.body.username === null || req.body.username === undefined) { 
     console.log("all fields please"); 
     // return res.status(400).json({ message: 'all fields please'}); 
     // res.send('all fields please') 
    } 

    console.log("not finished") 
} 

我試圖return res.status...res.send...,他們要麼沒有完成或打破了功能,或者無法顯示信息到控制檯。

有誰知道哪個是正確的方法來做到這一點?

+0

你試過'返回res.status'和'res.send'在一起? – wrangler

+0

不,無論是其中一個或其他... – SoftTimur

+0

返回將明顯打破功能.....什麼味精你在控制檯預測''不完成'??? – wrangler

沙发
0
0

return res.status(400).json({ message: 'all fields please' })確實有效。事情是不要忘記趕在前端:

return $http.post('/register', user).then(function (res) { 
     console.log("then: " + JSON.stringify(res.data)) 
    }).catch(function (res) { 
     console.log("catch: " + JSON.stringify(res.data.message)) 
    }) 
} 
0
votes
0answers
96 views
+10

加載文件

0

正確isAuthenticated我想在我的快遞應用程序使用passportpassport-local加載文件

在我的主要應用程序,我加載了以下內容:

const session = require('express-session') 
const passport = require('passport') 
// configure passport 
// require('./config/passport')(passport) 
const auth = require('./routes/auth') 
const index = require('./routes/index') 

const app = express() 

// view engine setup 
app.set('views', path.join(__dirname, 'views')) 
app.set('view engine', 'pug') 
app.use(logger(process.env.LOG_ENV)) 
app.use(bodyParser.json()) 
app.use(bodyParser.urlencoded({ 
    extended: false, 
})) 
app.use(express.static(path.join(__dirname, '/../public'))) 
app.use(cookieParser()) 

app.use(session({ 
    secret: 'super-mega-hyper-secret', 
    resave: false, 
    saveUninitialized: true, 
})) 
app.use(passport.initialize()) 
app.use(passport.session()) 

passport.js配置文件看起來相當典型:

const passport = require('passport') 
const LocalStrategy = require('passport-local').Strategy 
const serviceAuth = require('../service/auth') 

    passport.serializeUser((user, done) => { 
    done(null, user.id) 
    }) 

    passport.deserializeUser(async (id, done) => { 
    const user = await serviceAuth.findById(id) 
    done(null, user) 
    }) 

    passport.use('local', new LocalStrategy({ 
    usernameField: 'username', 
    }, async(username, password, done) => { 
    const user = await serviceAuth.signin(username, password) 
    done(null, user) 
    })) 

在我的路線,我想避開哪些路線需要身份驗證:

const express = require('express') 

const router = express.Router() 
const utils = require('../util/utils') 

router.get('/', utils.isLogged(), (req, res) => { 
    res.render('dashboard') 
}) 

module.exports = router 

utils/utils.js文件夾我有中間件來引導,哪個用戶通過身份驗證。

const passportConfig = require('../config/passport') 

function isLogged(req, res, next) { 
    const auth = this.passportConfig.isAuthenticated() 
    if (req.auth) { 
    next() 
    } else { 
    res.redirect('/') 
    } 
} 

module.exports = { 
    isLogged, 
} 

不過,在這裏我得到以下錯誤:

const auth = this.passportConfig.isAuthenticated() 
           ^

TypeError: Cannot read property 'isAuthenticated' of undefined 

任何建議如何正確加載護照我utils/utils.js文件夾?

我很感謝你的回覆!

更新

請查找以下github repo,這表明最小的可行例子。

沙发
0
0

在你isLogged()功能,this關鍵字指function本身,因此this.passportConfigundefined。你應該做的只是使用:

const auth = passportConfig.isAuthenticated(); 

沒有this關鍵字。

0
votes
0answers
86 views
+10

的Node.js的setTimeout方面的問題

0

我想一個模塊(節點8.9.0LTS)內的以下內容:的Node.js的setTimeout方面的問題

const someResponse = await ajaxService.post('/data/search', params) 
    const ms = 2000; 

    const intervalID = setInterval(function(){ 
    if(Object.keys(personDataResponse).length === 0){ 
     let url = `/api?searchRequestId=1111` 
     response = await ajaxService.get(url) 
    } 
    }, ms); 

    setTimeout(function() { 
     clearInterval(intervalID); 
    }, ms * 5); 

但我收到以下:

/path/to/project/project/api/router.js:27 
      response = await ajaxService.get(url) 
             ^^^^^^^^^^^ 

SyntaxError: Unexpected identifier 
    at createScript (vm.js:80:10) 
    at Object.runInThisContext (vm.js:139:10) 
    at Module._compile (module.js:599:28) 
    at Object.Module._extensions..js (module.js:646:10) 
    at Module.load (module.js:554:32) 
    at tryModuleLoad (module.js:497:12) 
    at Function.Module._load (module.js:489:3) 
    at Module.require (module.js:579:17) 
    at require (internal/module.js:11:18) 
    at Object.<anonymous> (/path/to/project/project/app.js:16:8) 

有什麼建議? ajaxService.get()在setTimeout之外是可訪問的。

+2

'setInterval'的意圖是在這裏?看起來你每兩秒運行一次請求五次,然後停止它。 – JLRishe

沙发
0
3

您不能在非異步函數中使用await。因此最簡單的解決辦法是給你的函數更改爲async

       // v--- here 
const intervalID = setInterval(async function() { 
    if(Object.keys(personDataResponse).length === 0){ 
    let url = `/api?searchRequestId=1111` 
    response = await ajaxService.get(url) 
    } 
}, ms); 
板凳
0
0

您是否嘗試過在這裏使用單引號?

let url = '/api?searchRequestId=1111'

你不會需要回剔反正如果你沒有任何串聯變量的字符串。

0
votes
0answers
64 views
+10

如何旋轉文本然後在graphicsmagick中繪製?

0

如何旋轉文本然後在graphicsmagick中繪製? 這是一個簡單的問題,但我從一個小時以來就無法從API瞭解它。如何旋轉文本然後在graphicsmagick中繪製?

幫助將appriciated,謝謝。 我正在使用gm,但從命令行執行它也足夠了。

此外還有一個關於這個問題的公開問題。 https://github.com/aheckmann/gm/issues/660

如果我們不能用graphicsmagick做到這一點,OpenCV或Imagemagick的替代方案是可能的。

+0

你能更具體嗎?旋轉文本並繪製??*什麼**? **哪裏**?也許舉個例子吧。 –

沙发
0
1

我同意Mark Setchell。這個問題不明確。在ImageMagick中,您可以通過多種方式繪製旋轉文字。 -annotate函數將通過它的參數來做到這一點。您還可以使用標籤創建一個新的文本圖像:然後旋轉並在背景圖像上進行組合。見http://www.imagemagick.org/Usage/text/http://www.imagemagick.org/script/command-line-options.php#annotate

輸入:

enter image description here

convert logo.jpg -font Arial -pointsize 64 -fill red -gravity center -annotate 20x20+0+0 "TESTING" logo_test.jpg 

或交替使用-draw

convert logo.jpg -font Arial -pointsize 64 -fill red -gravity center -draw "rotate 20 text 0,0 'TESTING'" logo_test2.jpg 

enter image description here

對不起,我不知道GraphicsMagick工具,但它應該有一個類似的操作符來註釋,也許是同一個名字。

+0

在GraphicsMagick的node.js中我找到了這個函數'.draw([「rotate -14 text 0,0」+ yourText])''''''''''''''''''''''''這個答案指出我找到了這個功能,這個功能在之前沒有看到過。謝謝。 –

+0

如果您將使用變量,那麼您的文本當然應該包含轉義或單引號。恩。 'var yourText =「」示例文本「」' –

0
votes
0answers
74 views
+10

節點js JWT獲取當前用戶

0

我使用節點JS,JWT和Sequelize進行API身份驗證,並使用React JS/redux作爲前端部分來處理應用程序。我成功實現了應用程序的登錄/註銷/註冊部分,但現在我需要訪問current_user登錄。節點js JWT獲取當前用戶

我把一個JWT放在localStorage中,但我想要訪問用戶ID ,用戶電子郵件,用戶名和更多關於我當前登錄用戶的信息。

我應該使用Cookie嗎? LocalStorage?或者我應該在我的API中創建一個currentUser方法?

我有點失落,如果有人能幫我找到一些有用的資源或建議!

謝謝!

沙发
0
1

在LocalStorage中存儲令牌沒問題。如果您需要獲取用戶詳細信息,請在您的API中創建一個端點,如getUser。然後,您可以使用jwt.decode(accessToken, JWT SECRET HERE),並假設accessToken有效,返回解碼值(這將是您的用戶)。

板凳
0
1

如果您將該信息放入JWT的有效負載中,則無需在服務器上進行解碼或不需要祕密即可獲取該信息,因此可以將該令牌放置在LocalStorage中以供任何時候使用。根據規範,智威湯遜是<headerINfo>.<payloadInfo>.<signature>。因此,在客戶端,你可以做:

// given a payload object of { username: 'bob', userid: 1, email: '[email protected]' } 
const tokenParts = token.split('.'); 
const encodedPayload = tokenParts[1]; 
const rawPayload = atob(encodedPayload); 
const user = JSON.parse(rawPayload); 
console.log(user.username); // outputs 'bob' 

顯然,這種信息是提供給有權限訪問令牌的任何客戶端,讓你只想把東西在有效載荷這對確定。

0
votes
0answers
77 views
+10

使用nvm卸載node.js的當前活動版本

0

在Ubuntu 16.04上,我錯誤地使用root來安裝nvm,然後通過nvm安裝node.js 8.8.1。我也用nvm alias default 8.8.1,認爲它會糾正我的錯誤。使用nvm卸載node.js的當前活動版本

現在我想:

  1. 刪除默認別名
  2. 卸載節點8.8.1
  3. 卸載NPM 4.8.5,它與節點
  4. 卸載NVM
  5. 來了正確地爲正確的非sudo用戶重新安裝所有內容

它看起來像我已經與第一部分成功:

# nvm unalias default 
Deleted alias default - restore it with `nvm alias "default" "8.8.1"` 

但NVM拒絕卸載節點8.8.1,因爲它是唯一安裝的版本:

# nvm uninstall 8.8.1                                
nvm: Cannot uninstall currently-active node version, v8.8.1 (inferred from 8.8.1). 

我猜測我首先需要取消激活節點8.8.1,但我看不到nvm --help的輸出中會出現這種情況。

在重新正確安裝所有內容之前,需要執行哪些步驟才能從機器中完全刪除node.js,npm和nvm?

沙发
0
2

第一類型

$ nvm deactivate 

然後輸入

$ nvm uninstall 8.8.1 
0
votes
0answers
85 views
+10

NodeJS + RxDB + Electron(持久數據)

0

我一直在玩PouchDB(使用express-pouchdb和pouchdb-find)一段時間,並意識到我需要通過Rxjs爲我的Angular 5/Electron應用程序。NodeJS + RxDB + Electron(持久數據)

對於我目前的設置,我跑express-pouchdb建立持久性本地化PouchDB,然後在角度我有以下幾點:

@Injectable() 
export class PouchdbService { 
    private _localdb = 'http://localhost:3000/main'; 
    private _pouchDb: any; 

    constructor() { 
    this._pouchDb = new PouchDB(this._localdb); 
    PouchDB.plugin(PouchDBFind); 

    this.createIndexes(); 
    } 

    private createIndexes(): void { 
    this._pouchDb.createIndex({ 
     index: { 
      fields: [ 'tags' ] 
     } 
    }); 

    this._pouchDb.createIndex({ 
     index: { 
      fields: [ 'date' ] 
     } 
    }) 

    this._pouchDb.createIndex({ 
     index: { 
      fields: [ 'title' ] 
     } 
    }); 
    } 

此通過_localdb屬性提供我的服務將快速應用。我可以保留PouchDB快速應用程序,只需通過重寫我的服務並重構代碼就可以通過RxDB調用它。但是,我想我需要在每個集合上撥打sync

雖然,我寧願刪除快速應用程序,如果有一種方式直接與RxDB持久運行。

沙发
0
1

我結束了使用websql adapter這顯然存儲應用程序負載之間的信息和下降express-pouchdb

0
votes
0answers
91 views
+10

無論我使用哪條路線,Express都加載了我的React應用程序,出了什麼問題?

0

我試圖在/物種中使用JSON,但是,無論我使用什麼路線,express都似乎總是加載反應應用程序。任何人都可以弄清楚什麼是錯的?這是我的server.js文件:無論我使用哪條路線,Express都加載了我的React應用程序,出了什麼問題?

const app = require('express')(); 
const cors = require('cors') 
const bodyParser = require('body-parser'); 
const path = require('path'); 
const express = require('express'); 

//Enable CORS app.use(cors()); 

const species = [ { 
    name: 'mallard' } ]; 

const sightings = [ { 
    id: '1', 
    species: 'gadwall', 
    description: 'All your ducks are belong to us', 
    dateTime: '2016-10-01T01:01:00Z', 
    count: 1 }, { 
    id: '2', 
    species: 'lesser scaup', 
    description: 'This is awesome', 
    dateTime: '2016-12-13T12:05:00Z', 
    count: 5 } ]; 

//Enable CORS app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); 

app.use(bodyParser.json()); 

app.get('/sightings', (req, res) => { 
res.json(sightings); }); 

app.post('/sightings', (req, res) => { 
req.body.id = (sightings.length + 1).toString(); 
sightings.push(req.body); 
res.json(req.body); }); 

app.get('/species', (req, res) => { res.json(species); }); 


app.use(express.static(path.resolve(__dirname, './react-front/build'))); 

app.get("*", (req, res) => { response.sendFile(path.resolve(__dirname, './react-front/build', 'index.html')); }); 

const port = process.env.PORT ? process.env.PORT : 8081; const server 
= app.listen(port,() => { 
    console.log("Server listening port %s", port); }); 
+0

歡迎來到Stack Overflow!有關您嘗試完成什麼/爲什麼以及目前嘗試完成的更多信息將對您有所幫助。有關於發佈問題的[一些提示](https://stackoverflow.com/help/how-to-ask)。 – ashleedawg

+0

看起來您正在重複發送此行上的靜態資產:app.get('*',...)。嘗試沒有它。 – Splitty

+0

@Splitty實際上並沒有改變任何東西。它仍然在任何路線上呈現反應應用程序。我試圖將信息從本地主機上的jsons呈現給反應應用程序。 – ejexet

沙发
0
0

我想你可以通過分離你想要使用React的路線來解決這個問題。

比如,你可以寫,你想使用反應,將其導出這些應用了新的Express模塊??:

const express = require('express'); 

const router = express.Router(); 

// Use 'react-front/build' for router, but not 
// your main Express application. 
router.use(express.static(path.resolve(__dirname, './react-front/build'))); 

router.get('/something', function(req, res) { 
    // Do something here 
}); 

module.exports = router; 

然後加入類似以下內容您的明示應用

// Require the module 
const reactRouter = require('./path/to/router'); 

app.use(reactRouter);