0
我需要使用「_id」而不是findById來使用mongoose查找方法。強制轉換爲ObjectId的值爲「ObjectId」並伴有貓鼬
在我的路由器,我收到一個正確的字符串「_id」從我的前端應用程序:
req.query.where="591f47d10d957323386f0c42".
隨着robomongo,接下來的作品還有:
db.getCollection('ag_escalaatendimentos').find({'_id':ObjectId('59247524723dec26aca239ed')})
但是當我運行的應用程序,我得到一個錯誤:
我的錯誤是:
"ObjectId" message:"Cast to ObjectId failed for value "ObjectId {↵ path: '591f47d10d957323386f0c42',↵ instance: 'ObjectID',↵ validators: [],↵ setters: [],↵ getters: [],↵ options: undefined,↵ _index: null }" at path "_id" for model "Ag_escalaatendimento""
name:
"CastError" path:"_id" stringValue: ""ObjectId {path: '591f47d10d957323386f0c42', instance: 'ObjectID', validators: [], setters: [], getters: [], options: undefined,↵ _index: null }""
//代碼
'use strict';
const express = require('express');
const router = express.Router();
const Ag_escalaatendimento = require('../models/ag_escalaatendimento');
const callback=function(err,data,res){
//if (err) console.log(err);
if (err) return res.status(500).json(err);
return res.status(200).send(data);
}
//get all
router.get('/',function(req,res,next){
var mongoose = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;
//Here I have req.query.where: "591f47d10d957323386f0c42".
var qrySearch={"_id": new ObjectId(req.query.where)};
Ag_escalaatendimento.find(qrySearch)
.exec((err,data) => {
callback(err,data,res)
})
});
'querySearch = {「_id」:req.query.where}'。貓鼬會爲你做。這就是說,我沒有理由爲什麼你不能'.findById(req.query.where)' –
@ Neil Lunn你的建議querySearch沒有返回任何文件。我已經嘗試過了。正如你在我的文章中看到的,robomango返回一個文件。 –
顯示您認爲應該檢索的文檔。文本輸出,而不是一個截圖請。如果您可能重寫'_id'的定義,那麼還包括您的模式定義。一般的原因是數據庫中的值實際上不是「ObjectId」而是「字符串」(通常來自錯誤代碼)。或者確實沒有文件可以匹配。 –